Compreensão de lista em Python – com exemplos
Publicados: 2022-02-18Em 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
. -
nums
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úmeronum
é elevado à potênciapow
.
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 colocar a instrução de compreensão da lista dentro de[]
. -
<item>
em<iterable>
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. -
<expression>
é a saída que você gostaria de calcular para cada<item>
no<iterable>
.
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.

Agora que você aprendeu a sintaxe, é hora de começar a codificar. Você pode usar o Python IDE online da Geekflare 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:
-
<do-this>
: Aqui, você tem que cubo cadanum
. Então substitua<do-this>
pornum**3
. -
<all-items>
: A variável de loop énum
— os números individuais na lista. -
<this-list>
: 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 a lista de authors
— 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 author_list
.
Nota: Em Python, o método de string title() 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:
First-name Last-name
Então aqui está tudo que você precisa fazer:
- percorrer a lista de
authors
e para cadaauthor
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 area
de lista que inclua a área desses 4 retângulos. Lembre-se, area = length * breadth
.
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 sintaxezip(*iterables)
. Em seguida, ele retorna um iterador de tuplas, onde a tuplai
contém o elementoi
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]
, a tupla 1
contém l_arr[1]
e b_arr[1]
e assim por diante.

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 <expression>
para todos os itens, você gostaria de fazer isso apenas para os itens que satisfazem uma <condition>
específica —onde, condition := True
. E isso leva a uma sintaxe simplificada, conforme mostrado:

Com isso, vamos prosseguir para 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,
<char>.isdigit()
atua em um caractere<char>
e retornaTrue
se for um dígito (0-9); senão ele retornaFalse
.
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
char
para verificar se é um dígito usando o métodoisdigit()
e - adicione
char
aos novosdigits
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 fruits
da lista de frutas que começam com b
. Você pode usar o método startswith()
para escrever a condição.
O
<str>.startswith('char')
retornaráTrue
se <str> começar com 'char'; senão ele retornaFalse
.
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 fruits
, 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> para <all-items> em <this-list>] para criar uma nova lista usando compreensão de lista.
- Além disso, você pode usar a sintaxe [<do this> para <all-items> em <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.