Compreensões de lista Python

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 numberslista

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 forloop itera sobre os elementos da numberslista, 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 forloop 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 numberslista:

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 forloop 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()ou filter()para tornar seu código mais conciso e legível.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *