Aula passada Listas 1 Listas 2 Tuplos list comprehension list ...
Aula passada Listas 1 Listas 2 Tuplos list comprehension list ...
Aula passada Listas 1 Listas 2 Tuplos list comprehension list ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Aula</strong> <strong>passada</strong><br />
<strong>Listas</strong> 2<br />
<strong>Listas</strong><br />
<strong>Tuplos</strong><br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
Referências a <strong>list</strong>as, aliases<br />
>>> a = [1,2,3]<br />
>>> b = a<br />
>>> b[1] = "IP"<br />
>>> a<br />
[1, ’IP’, 3]<br />
Cloning de <strong>list</strong>as<br />
>>> a = [1,2,3]<br />
>>> b = a[:]<br />
>>> b[1] = "IP"<br />
>>> a<br />
[1, 2, 3]<br />
<strong>list</strong> <strong>comprehension</strong><br />
<strong>Tuplos</strong><br />
<strong>Listas</strong> em compreensão<br />
Alguns idiomas úteis<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
<strong>Tuplos</strong><br />
<strong>Listas</strong> em compreensão<br />
Alguns idiomas úteis<br />
Um idioma muito utilizado para produzir <strong>list</strong>as á o seguinte:<br />
initialize a result variable to be an empty <strong>list</strong><br />
loop<br />
create a new element<br />
append it to result<br />
return the result<br />
Pode ser substituído por uma <strong>list</strong>a em compreensão:<br />
>>> my<strong>list</strong> = [1,2,3,4,5]<br />
>>> your<strong>list</strong> = [item ** 2 for item in my<strong>list</strong>]<br />
>>> print(your<strong>list</strong>)<br />
[1, 4, 9, 16, 25]<br />
Exemplo do livro:<br />
def primes_upto(n):<br />
result = [num for num in range(2,n) if is_prime(num)]<br />
return result<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
Funções puras e modificadores<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
Funções puras não modificam as variáveis que lhes são <strong>passada</strong>s<br />
como argumentos.<br />
Funções puras também não têm efeitos laterais, tais como imprimir um<br />
valor ou fazer input de dados.<br />
Neste contexto, funções que não tenham estas caraterísticas (coma<br />
função definida de seguida) são classificadas como modificadoras:<br />
def doubleStuff(aList):<br />
for position in range(len(aList)):<br />
aList[position] = 2 * aList[position]<br />
things = [2, 5, 9]<br />
new_things = doubleStuff(things)<br />
print(things)<br />
Esta função altera o valor que lhe é passado!<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
<strong>Listas</strong> 1<br />
<strong>Tuplos</strong><br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
<strong>Tuplos</strong><br />
<strong>Listas</strong> em compreensão<br />
Alguns idiomas úteis<br />
conjuntos ordenado de valores, cada um dos quais identificado por um<br />
índice;<br />
Operações com <strong>list</strong>as: semelhantes a operações com strings;<br />
<strong>list</strong>as são mutáveis<br />
atribuição a um elemento: e.g., a[2] = 7<br />
remoção de elementos de uma <strong>list</strong>a:<br />
>>> a = [1,2,3,4,5]<br />
>>> del a[1]<br />
>>> a<br />
[1, 3, 4, 5]<br />
>>> del a[1:3]<br />
>>> a<br />
[1, 5]<br />
inserção/substituição/remoção de elementos de <strong>list</strong>as:<br />
>>> a = [1,2,3]<br />
>>> a[1:1] = [’a’,’b,’]<br />
>>> a<br />
[1, ’a’, ’b,’, 2, 3]<br />
>>> a[2:4] = []<br />
>>> a<br />
[1, ’a’, 3]<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
Sintaxe:<br />
a = (1,2,3,4,5)<br />
<strong>Tuplos</strong>: como <strong>list</strong>as, mas imutáveis<br />
Com <strong>list</strong>as: Com tuplos:<br />
>>> s = [1,2,3,4,5]<br />
>>> s[2] = 999<br />
>>> s<br />
[1, 2, 999, 4, 5]<br />
<strong>Tuplos</strong> com um elemento:<br />
>>> tup = (5,)<br />
>>> print(type(tup))<br />
<br />
<strong>Tuplos</strong> vazios:<br />
>>> z = ()<br />
>>> type(z)<br />
<br />
<strong>list</strong> <strong>comprehension</strong><br />
<strong>Tuplos</strong><br />
<strong>Listas</strong> em compreensão<br />
Alguns idiomas úteis<br />
>>> t = (1,2,3,4,5)<br />
>>> t[2] = 999<br />
Traceback (most recent call last):<br />
File "", line 1, in <br />
TypeError: ’tuple’ object does not support item assignment<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
ints = [8,23,45,12,78]<br />
0 8<br />
for (idx,val) in enumerate(ints): 1 23<br />
print(idx,val)<br />
2 45<br />
3 12<br />
4 78<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
Função pura equivalente<br />
def doubleStuff(a_<strong>list</strong>):<br />
new_<strong>list</strong> = []<br />
for value in a_<strong>list</strong>:<br />
new_elem = 2 * value<br />
new_<strong>list</strong>.append(new_elem)<br />
return new_<strong>list</strong><br />
things = [2, 5, 9]<br />
new_things = doubleStuff(things)<br />
print(things)<br />
Esta função:<br />
Cria um novo objecto new_<strong>list</strong><br />
Inicializa-o<br />
<strong>Tuplos</strong><br />
<strong>Listas</strong> em compreensão<br />
Alguns idiomas úteis<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
Devolve uma referência para o novo objecto<br />
Não altera a <strong>list</strong>a things<br />
João Pedro PEDROSO Introdução à Programação - minor
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
Funções puras e modificadores<br />
Como escolher?<br />
Tudo o que pode ser feito com modificadores também pode ser feito<br />
com funções puras<br />
Algumas linguagens de programação só permitem funções puras<br />
Programas que têm apenas funções puras são normalmente de mais<br />
rápida implementação e menos sujeitos a erros<br />
Mas...<br />
modificadores por vezes são convenientes, e em alguns casos<br />
programas funcionais são menos eficientes<br />
Recomendação (estilo de programação funcional):<br />
1 Sempre que isso for razoável, escrever funções puras<br />
2 Quando há uma vantagem clara nisso, recorrer a modificadores<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
Noções estudadas esta semana<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
função modificadora função que altera os seus argumentos (ou produz outro<br />
efeito lateral); nota: só tipos mutáveis é que podem ser<br />
alterados<br />
objeto aquilo a que uma variável se pode referir<br />
padrão (pattern) sequência de instrução com aplicabilidade em<br />
situações diferentes; uma das principais atividades de um<br />
cientista da computação é a sua identificação<br />
função pura função que altera não os seus argumentos, nem produz<br />
nenhum efeito lateral<br />
efeitos laterais alteração do estado de um programa, feita pela chamada a<br />
uma função, se não consistir na leitura do seu valor de<br />
retorno; são produzidos por modificadores<br />
<strong>list</strong>a imbricada <strong>list</strong>a que é o elemento de outra <strong>list</strong>a<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
Noções estudadas esta semana<br />
aliases múltiplas variáveis que se referem ao mesmo objeto<br />
clone copia de um objeto, com o mesmo conteúdo do original<br />
delimitador carater utilizado para indicar onde uma string deve ser<br />
dividida<br />
índice variável inteira que indica um elemento numa <strong>list</strong>a<br />
elemento um dos valores numa sequência; pode ser selecionado com<br />
o operador []<br />
<strong>list</strong>a coleção de objetos, cada um dos quais pode ser identificado<br />
por um índice; tipos “compatíveis” podem ser convertidos<br />
para <strong>list</strong>as com <strong>list</strong>(x) (tal como com int(x), float(x),<br />
etc.)<br />
percorrer uma <strong>list</strong>a: aceder sequencialmente a cada um dos seus<br />
elementos<br />
Próximas aulas<br />
mutável tipo de dados composto, a cujos elementos se pode atribuir<br />
novos valores<br />
Dicionários<br />
Ficheiros<br />
João Pedro PEDROSO Introdução à Programação - minor<br />
<strong>Aula</strong> <strong>passada</strong>. . .<br />
Sequências<br />
Funções puras e modificadores<br />
Outras estruturas de dados em Python.<br />
João Pedro PEDROSO Introdução à Programação - minor