List comprehension - Python
7.14.2006
List Comprehensions - Python
List Comprehensions é uma utilidade de Python pouco usada, mas de muito poder e utilidade.
É uma maneira de gerar uma lista sem usar as funções map, filter ou lambda.
- Sintaxe básica
A list comprehension mais básica consiste de uma expressão de retorno seguida de uma
declaração for:
[ funcao( iterador ) for iterador in objetoIteravel ]
Para compôr a lista, Python irá percorrer o objetoIteravel e para cada elemento nesse objeto,
irá adicionar à lista o resultado de funcao( iterador ).
Exemplo prático:
frases = [ "EU", "ADORO", "LIST COMPREHENSIONS" ]
lista = [ palavra.lower( ) for palavra in frases ]
print lista
O retorno será:
['eu', 'adoro', 'list comprehensions']
- Filtrando a lista gerada
As lists comprehensions têm a capacidade de filtrar a lista gerada usando um IF após a declaração
FOR. Vejamos o exemplo anterior com um if:
frases = [ "EU", "ADORO", "LIST COMPREHENSIONS" ]
lista = [ palavra.lower( ) for palavra in frases if palavra[0] in ("E", "A")]
print lista
Teremos a saída:
['eu', 'adoro'] ## somente as frases começadas por E ou A.
- Combinando fors
Também podemos iterar ao mesmo tempo em dois ou mais objetos iteráveis. Assim podemos fazer uma lista
baseada em outras duas listas, por exemplo:
"Dados dois vetores, retorne os elementos combinados que somados retornam valor maior que 5"
vet1 = [ 1, 2, 3 ]
vet2 = [ 2, 3, 4 ]
valores = [(x, y) for y in vet2 for x in vet1 if x + y > 5 ]
print valores
Teremos a saída:
[(3, 3), (2, 4), (3, 4)]
OBS: Notem que para retornar um lista de tuplas eu tive que pôr os valores-retorno entre parênteses, caso eu quisesse retornar
uma lista de listas, colocaria entre colchetes.
- Conselho
Tente sempre usar a sintaxe básica com, no máximo um, if e uma declaração for. Além disso ficará complicado e difícil de manter.
Antes da praticidade, vem a clareza. Lembre-se disso.
Sempre às ordens,
Murtog.
List Comprehensions é uma utilidade de Python pouco usada, mas de muito poder e utilidade.
É uma maneira de gerar uma lista sem usar as funções map, filter ou lambda.
- Sintaxe básica
A list comprehension mais básica consiste de uma expressão de retorno seguida de uma
declaração for:
[ funcao( iterador ) for iterador in objetoIteravel ]
Para compôr a lista, Python irá percorrer o objetoIteravel e para cada elemento nesse objeto,
irá adicionar à lista o resultado de funcao( iterador ).
Exemplo prático:
frases = [ "EU", "ADORO", "LIST COMPREHENSIONS" ]
lista = [ palavra.lower( ) for palavra in frases ]
print lista
O retorno será:
['eu', 'adoro', 'list comprehensions']
- Filtrando a lista gerada
As lists comprehensions têm a capacidade de filtrar a lista gerada usando um IF após a declaração
FOR. Vejamos o exemplo anterior com um if:
frases = [ "EU", "ADORO", "LIST COMPREHENSIONS" ]
lista = [ palavra.lower( ) for palavra in frases if palavra[0] in ("E", "A")]
print lista
Teremos a saída:
['eu', 'adoro'] ## somente as frases começadas por E ou A.
- Combinando fors
Também podemos iterar ao mesmo tempo em dois ou mais objetos iteráveis. Assim podemos fazer uma lista
baseada em outras duas listas, por exemplo:
"Dados dois vetores, retorne os elementos combinados que somados retornam valor maior que 5"
vet1 = [ 1, 2, 3 ]
vet2 = [ 2, 3, 4 ]
valores = [(x, y) for y in vet2 for x in vet1 if x + y > 5 ]
print valores
Teremos a saída:
[(3, 3), (2, 4), (3, 4)]
OBS: Notem que para retornar um lista de tuplas eu tive que pôr os valores-retorno entre parênteses, caso eu quisesse retornar
uma lista de listas, colocaria entre colchetes.
- Conselho
Tente sempre usar a sintaxe básica com, no máximo um, if e uma declaração for. Além disso ficará complicado e difícil de manter.
Antes da praticidade, vem a clareza. Lembre-se disso.
Sempre às ordens,
Murtog.