Resumo : neste tutorial, você aprenderá sobre as compreensões de lista do Python que permitem criar uma nova lista a partir de uma lista existente.
Introdução à compreensão de listas em Python
Na programação, muitas vezes é necessário transformar elementos de uma lista e retornar uma nova lista.
Por exemplo, suponha que você tenha uma lista de cinco números como esta:
numbers = [1, 2, 3, 4, 5]
Linguagem de código: Python ( python )
E você deseja obter uma lista de quadrados com base nesta numbers
lista
A maneira direta é usar um loop for :
numbers = [1, 2, 3, 4, 5]
squares = []
for number in numbers:
squares.append(number**2)
print(squares)
Linguagem de código: Python ( python )
Neste exemplo, o for
loop itera sobre os elementos da numbers
lista, eleva ao quadrado cada número e adiciona o resultado à lista de quadrados.
Observe que um número quadrado é o produto do número multiplicado por ele mesmo. Por exemplo, o número quadrado 2 é 2*2 = 4, o número quadrado de 3 é 3*3 = 9 e assim por diante.
Para tornar o código mais conciso, você pode usar a função integrada map()
com uma expressão lambda:
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda number: number**2, numbers))
print(squares)
Linguagem de código: Python ( python )
Como a map()
função retorna um iterador , você precisa usar a list()
função para converter o iterador em uma lista.
Tanto o for
loop quanto map()
a função podem ajudá-lo a criar uma nova lista baseada em uma existente. Mas o código não é realmente conciso e bonito.
Para ajudá-lo a criar uma lista baseada na transformação de elementos de uma lista existente, Python fornece um recurso chamado compreensão de lista.
O seguinte mostra como usar a compreensão de lista para fazer uma lista de quadrados da numbers
lista:
numbers = [1, 2, 3, 4, 5]
squares = [number**2 for number in numbers]
print(squares)
Linguagem de código: Python ( python )
E aqui está a parte de compreensão da lista:
squares = [number**2 for number in numbers]
Linguagem de código: Python ( python )
Uma compreensão de lista consiste nas seguintes partes:
- Uma lista de entrada (
numbers
) - Uma variável que representa os elementos da lista (
number
) - Uma expressão de saída (
number**2
) que retorna os elementos da lista de saída a partir dos elementos da lista de entrada.
O seguinte mostra a sintaxe básica da compreensão da lista Python:
[output_expression for element in list]
Linguagem de código: Python ( python )
É equivalente ao seguinte:
output_list = []
for element in list:
output_list.append(output_expression)
Linguagem de código: Python ( python )
Compreensão da lista Python com condição if
O seguinte mostra uma lista das cinco montanhas mais altas da Terra:
mountains = [
['Makalu', 8485],
['Lhotse', 8516],
['Kanchendzonga', 8586],
['K2', 8611],
['Everest', 8848]
]
Linguagem de código: Python ( python )
Para obter uma lista de montanhas onde a altura é superior a 8.600 metros, você pode usar um for
loop ou a filter()
função com uma expressão lambda como esta:
mountains = [
['Makalu', 8485],
['Lhotse', 8516],
['Kanchendzonga', 8586],
['K2', 8611],
['Everest', 8848]
]
highest_mountains = list(filter(lambda m: m[1] > 8600, mountains))
print(highest_mountains)
Linguagem de código: Python ( python )
Saída:
[['K2', 8611], ['Everest', 8848]]
Linguagem de código: Python ( python )
Assim como a map()
função, a filter()
função retorna um iterador. Portanto, você precisa usar a list()
função para converter o iterador em uma lista.
As compreensões de lista do Python fornecem um predicado opcional que permite especificar uma condição para os elementos da lista serem incluídos na nova lista:
[output_expression for element in list if condition]
Linguagem de código: Python ( python )
Esta compreensão da lista permite substituir o filter()
por uma expressão lambda:
mountains = [
['Makalu', 8485],
['Lhotse', 8516],
['Kanchendzonga', 8586],
['K2', 8611],
['Everest', 8848]
]
highest_mountains = [m for m in mountains if m[1] > 8600]
print(highest_mountains)
Linguagem de código: Python ( python )
Saída:
[['K2', 8611], ['Everest', 8848]]
Linguagem de código: Python ( python )
Resumo
- As compreensões de lista do Python permitem que você crie uma nova lista a partir de uma lista existente.
- Use compreensões de lista em vez de
map()
oufilter()
para tornar seu código mais conciso e legível.