Compreensões de listas do Python

Resumo: neste tutorial, você aprenderá sobre as compreensões de lista do Python que permitem criar uma nova lista a partir de uma existente.

Introdução às compreensões de lista do Python

Na programação, muitas vezes você precisa 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]

E você deseja obter uma lista de quadrados com base nesta lista numbers.

A maneira direta é usar um loop for:

numbers = [1, 2, 3, 4, 5]

squares = []
for number in numbers:
    squares.append(number**2)

print(squares)

Neste exemplo, o loop for itera sobre os elementos da lista numbers, eleva cada número ao quadrado e adiciona o resultado à lista de quadrados.

Observe que um número ao quadrado é o produto do número multiplicado por ele mesmo. Por exemplo, o número quadrado 2 é 2*2 = 4, o número quadrado 3 é 3*3 = 9 e assim por diante.

Para tornar o código mais conciso, você pode usar a função interna map() com uma expressão lambda:

numbers = [1, 2, 3, 4, 5]

squares = list(map(lambda number: number**2, numbers))

print(squares)

Como a função map() retorna um iterador, você precisa usar a função list() para converter o iterador em uma lista.

Tanto o loop for quanto a função map() podem ajudá-lo a criar uma nova lista com base em uma existente. Mas o código não é realmente conciso e bonito.

Para ajudá-lo a criar uma lista com base na transformação de elementos de uma lista existente, o Python fornece um recurso chamado compreensão de lista.

Veja a seguir como usar a compreensão de lista para criar uma lista de quadrados a partir da lista numbers:

numbers = [1, 2, 3, 4, 5]
squares = [number**2 for number in numbers]

print(squares)

E aqui está a parte de compreensão da lista:

squares = [number**2 for number in numbers]

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 dos elementos da lista de entrada.

O seguinte mostra a sintaxe básica da compreensão da lista do Python:

[output_expression for element in list]

É equivalente ao seguinte:

output_list = []
for element in list:
    output_list.append(output_expression)

Compreensão de lista python com condição if

O seguinte mostra uma lista das cinco principais montanhas mais altas da Terra:

mountains = [
    ['Makalu', 8485],
    ['Lhotse', 8516],
    ['Kanchendzonga', 8586],
    ['K2', 8611],
    ['Everest', 8848]
]

Para obter uma lista de montanhas com altura superior a 8.600 metros, você pode usar um loop for ou a função filter() 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)

Saída:

[['K2', 8611], ['Everest', 8848]]

Como a função map(), a função filter() retorna um iterador. Portanto, você precisa usar a função list() 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 a serem incluídos na nova lista:

[output_expression for element in list if condition]

Essa compreensão de lista permite que você substitua 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)

Saída:

[['K2', 8611], ['Everest', 8848]]

Resumo

  • As compreensões de lista do Python permitem que você crie uma nova lista a partir de uma 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 *