Compreensão de lista em Python – com exemplos

Em Python, as compreensões de lista ajudam você a criar novas listas a partir de iteráveis ​​existentes, como listas, strings e tuplas.

Sua sintaxe sucinta permite criar novas listas em apenas uma linha de código. E este tutorial vai te ensinar como você pode fazer isso.

Nos próximos minutos, você aprenderá:

  • Como criar uma nova lista usando loops for,
  • A sintaxe para usar compreensões de lista em Python e
  • Como modificar as compreensões da lista com a instrução condicional if.

Além disso, você também codificará vários exemplos que o ajudarão a entender melhor a compreensão da lista.

Vamos mergulhar.🌊

Como criar listas Python usando for Loops

Suponha que você tenha um número de lista de números nums. E você gostaria de criar outra lista que contenha o cubo de todos os números em nums. Veja como você fará isso usando um loop for em Python:

nums = [2,3,5,7]
num_cubes = []
for num in nums:
  num_cubes.append(num**3)

print(num_cubes)

# Output
[8, 27, 125, 343]

No código acima temos os seguintes passos:

  • Inicialize uma lista vazia num_cubes.
  • Percorra a lista de números.
  • Acesse cada número num e calcule seu cubo usando o operador de exponenciação: num**3.
  • Por fim, anexe o valor em cubo à lista num_cubes

Nota: Em Python, o operador de exponenciação ** é usado com a sintaxe: num**pow—o número num é elevado à potência pow.

No entanto, você pode fazer isso mais facilmente usando a compreensão de lista em Python. Vamos prosseguir para aprender sua sintaxe.

Sintaxe de Compreensão da Lista Python

A sintaxe geral para compreensão de lista é mostrada abaixo.

<new_list> = [<expression> for <item> in <iterable>]

Vamos analisar a sintaxe acima.

  • Em Python, as listas são delimitadas por um par de colchetes []-portanto, você precisa incluir a instrução de compreensão da lista dentro [].
  • em significa que você está percorrendo um iterável. Qualquer objeto Python que você possa percorrer e acessar itens individuais, como listas, tuplas e strings, são iteráveis.
  • é a saída que você gostaria de calcular para cada no .

E isso parece simples, sim?

Em essência, você gostaria de fazer algo para todos os itens da lista (ou qualquer iterável) para obter uma nova lista.

Usando isso, podemos simplificar a sintaxe, conforme mostrado na imagem abaixo.

Sintaxe de compreensão da lista Python (imagem do autor)

Agora que você aprendeu a sintaxe, é hora de começar a codificar. Você pode usar o IDE Python online do etechpt.com para acompanhar esses exemplos. Ou você pode executá-los em sua máquina local.

Exemplos de Compreensão da Lista Python

Na seção anterior, você criou uma nova lista num_cubes de nums. Vamos começar reescrevendo isso usando compreensão de lista.

Usando a compreensão de lista com números

Agora vamos usar a sintaxe simplificada da seguinte forma:

  • : Aqui, você tem que cubo cada num. Então substitua por num**3.
  • : A variável de loop é num—os números individuais na lista.
  • : A lista existente que temos é nums.
  • E [num**3 for num in nums] é a expressão final. ✅

Juntando tudo, temos o seguinte trecho de código:

num_cubes = [num**3 for num in nums]
print(num_cubes)

# Output
[8, 27, 125, 343]

Parabéns, você codificou sua primeira compreensão de lista.🎉

Seguindo em frente, vamos trabalhar com strings Python.

Usando compreensão de lista com strings

Suponha que você tenha os autores da lista — você pode reescrever a lista abaixo com seus autores favoritos.😄

authors = ["jane austen","george orwell","james clear","cal newport"]

Observe como os nomes dos autores estão em letras minúsculas na lista acima. Agora gostaríamos de formatá-los em maiúsculas e armazená-los em uma nova lista chamada author_list.

Nota: Em Python, o método string título() aceita uma string como argumento e retorna uma cópia da string formatada em maiúsculas e minúsculas. Ou seja, a primeira letra de cada palavra é maiúscula: Nome Sobrenome

Então aqui está tudo que você precisa fazer:

  • percorrer a lista de autores e para cada autor na lista,
  • chame author.title() para obter uma cópia em maiúsculas e minúsculas da string.

E o código Python para isso é mostrado abaixo:

authors = ["jane austen","george orwell","james clear","cal newport"]

author_list = [author.title() for author in authors]
print(author_list)

# Output
['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

Na saída acima, observe como os nomes de todos os autores foram formatados em maiúsculas, que é o que queríamos.

Usando a compreensão de lista com várias listas

Até agora, você aprendeu como usar a compreensão de listas para criar novas listas a partir de uma lista existente. Agora vamos aprender como criar uma nova lista a partir de várias listas.

Por exemplo, considere este problema: Você tem duas listas l_arr e b_arr contendo os comprimentos e larguras de 4 retângulos.

E você precisa criar uma nova área de lista que inclua a área desses 4 retângulos. Lembre-se, área = comprimento * largura.

l_arr = [4,5,1,3]
b_arr = [2,1,7,9]

Você precisará de elementos de ambas as listas (l_arr e b_arr) para calcular a área. E você pode fazer isso usando a função zip() do Python.

Nota: Em Python, a função zip() aceita um ou mais iteráveis ​​como argumentos com a sintaxe zip(*iteráveis). Em seguida, ele retorna um iterador de tuplas, onde a tupla i contém o elemento i de cada um dos iteráveis.

A imagem a seguir descreve isso em detalhes. Você tem 4 valores em l_arr e b_arr, então o intervalo de índices é de 0 a 3. Como você pode ver, a tupla 0 contém l_arr[0] e b_arr[0]tupla 1 contém l_arr[1] e b_arr[1]e assim por diante.

Função Python zip() (Imagem do autor)

Portanto, você pode percorrer zip(l_arr,b_arr) conforme mostrado abaixo:

area = [l*b for l,b in zip(l_arr,b_arr)]
print(area)

# Output
[8,5,7,27]

Na próxima seção, você aprenderá como usar instruções condicionais dentro de uma compreensão de lista.

Compreensão de lista Python com sintaxe de condição

Vamos começar com base na sintaxe anterior para compreensão de lista.

Aqui está a sintaxe:

<new_list> = [<expression> for <item> in <iterable> if <condition>]

Em vez de calcular a para todos os itens, você gostaria de fazê-lo apenas para os itens que satisfazem uma específica—onde, condição := Verdadeiro. E isso leva a uma sintaxe simplificada, conforme mostrado:

Compreensão de lista Python com sintaxe de condição (imagem do autor)

▶ Com isso, vamos prosseguir com exemplos de código.

Compreensão de lista do Python com exemplos de condição

#1. Você recebe a string “Estou aprendendo Python em 2022”. Você gostaria de obter uma lista de todos os dígitos nesta string. Então como você faz isso?

Em Python, .isdigit() atua em um caractere e retorna True se for um dígito (0-9); senão ele retorna False.

O trecho de código abaixo mostra como você pode coletar a lista de todos os dígitos na string str1.

str1 = "I'm learning Python3 in 2022"

digits = [char for char in str1 if char.isdigit()]

print(digits)

# Output
['3', '2', '0', '2', '2']

No código acima:

  • você percorre a string str1,
  • acesse cada caractere para verificar se é um dígito usando o método isdigit() e
  • adicione char aos novos dígitos da lista somente se for um dígito.

Vamos dar outro exemplo.

#2. Você tem uma lista de frutas.🍊 E você gostaria de criar uma lista starts_with_b que contém todas as frutas da lista de frutas que começam com b. Você pode usar o método startswith() para escrever a condição.

O .startswith(‘char’) retornará True se começar com ‘char’; senão ele retorna False.

fruits = ['blueberry','apple','banana','orange','cherry']

starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')]

print(starts_with_b)

# Output
['blueberry', 'banana']

Na saída acima, obtemos ‘blueberry’ e ‘banana’ que são as duas frutas que começam com ‘b’ na lista de frutas, como esperávamos.

E isso encerra nossa discussão sobre compreensão de listas.

Conclusão

Espero que este tutorial tenha ajudado você a entender as compreensões de lista em Python.

Vamos resumir:

  • Você pode usar [<do this> for <all-items> in <this-list>] para criar uma nova lista usando compreensão de lista.
  • Além disso, você pode usar a sintaxe [<do this> for <all-items> in <this-list> if <condition-is-True>] com a instrução condicional if.

Além disso, você também codificou vários exemplos. Como próximo passo, você pode tentar reescrever alguns de seus loops Python existentes para criação de lista usando compreensão de lista. Boa codificação! Até o próximo tutorial.😄

Agora você pode ver como converter uma lista em um dicionário ou aprender a lidar com arquivos em Python.

  Como salvar um e-mail no disco rígido