É muito comum em Python ver o seguinte padrão, que usa um laço de repetição para construir, ou popular, uma lista:
nova_lista = []
for «valor» in «iterável»:
resultado.append(«novo_elemento») # o novo elemento é calculado a partir do valor
É possível ainda "filtrar", usar uma condição que permite ou não produzir novos elementos.
nova_lista = []
for «valor» in «iterável»:
if «condição»: # a condição depende do valor
resultado.append(«novo_elemento») # o novo elemento depende do valor
Isso pode ser reescrito da seguinte maneira:
nova_lista = [«novo_elemento» for «valor» in «iterável» if «condição»]
# o primeiro padrão, sem a condição, é apenas [«novo_elemento» for «valor» in «iterável»]
Vamos ver um exemplo concreto
divisivel_por_3 = []
for n in range(1000):
if n % 3 == 0:
divisivel_por_3.append(n)
divisivel_por_3 = [n for n in range(1000) if n % 3 == 0]
É muito comum em Python ver o seguinte padrão, que usa um laço de repetição para construir, ou popular, uma lista:
É possível ainda "filtrar", usar uma condição que permite ou não produzir novos elementos.
Isso pode ser reescrito da seguinte maneira:
Vamos ver um exemplo concreto
Expressões geradoras (generator expressions) também!
Vide Pense em Python: Abrangência de listas https://github.com/villares/PensePython2e/blob/master/docs/19-extra.md#192---abrang%C3%AAncia-de-listas Expressões geradoras https://github.com/villares/PensePython2e/blob/master/docs/19-extra.md#193---express%C3%B5es-geradoras