Python - Compreensão de lista
Compreensão da lista
A compreensão de lista oferece uma sintaxe mais curta quando você deseja criar uma nova lista com base nos valores de uma lista existente.
Exemplo:
Com base em uma lista de frutas, você deseja uma nova lista, contendo apenas as frutas com a letra "a" no nome.
Sem compreensão de lista, você terá que escrever uma for
declaração com um teste condicional dentro:
Exemplo
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Com compreensão de lista, você pode fazer tudo isso com apenas uma linha de código:
Exemplo
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
A Sintaxe
newlist = [expression for item in iterable if condition == True]
O valor de retorno é uma nova lista, deixando a lista antiga inalterada.
Doença
A condição é como um filtro que aceita apenas os itens que avaliam como
True
.
Exemplo
Aceite apenas itens que não sejam "maçã":
newlist = [x for x in fruits if x != "apple"]
A condição
if x != "apple"
retornará True
para todos os elementos exceto "maçã", fazendo com que a nova lista contenha todas as frutas, exceto "maçã".
A condição é opcional e pode ser omitida:
Exemplo
Sem if
declaração:
newlist = [x for x in fruits]
Iterável
O iterável pode ser qualquer objeto iterável, como uma lista, tupla, conjunto etc.
Exemplo
Você pode usar a range()
função para criar um iterável:
newlist = [x for x in range(10)]
Mesmo exemplo, mas com uma condição:
Exemplo
Aceite apenas números inferiores a 5:
newlist = [x for x in range(10) if x < 5]
Expressão
A expressão é o item atual na iteração, mas também é o resultado, que você pode manipular antes que termine como um item de lista na nova lista:
Exemplo
Defina os valores na nova lista para maiúsculas:
newlist = [x.upper()
for x in fruits]
Você pode definir o resultado para o que quiser:
Exemplo
Defina todos os valores na nova lista para 'hello':
newlist = ['hello' for x in fruits]
A expressão também pode conter condições, não como um filtro, mas como forma de manipular o resultado:
Exemplo
Retorne "laranja" em vez de "banana":
newlist = [x if x != "banana" else "orange"
for x in fruits]
A expressão no exemplo acima diz:
"Devolva o item se não for banana, se for banana devolva laranja".