Python 101 - Parte 9 - Estruturas de Dados - List Comprehention
Posted on Mon 22 August 2022 in Tutoriais • 3 min read
Olá!
Como prometido, hoje vamos continuar o post falando sobre listas em Python, pois este é uma assunto bastante extenso.
O assunto de hoje é List Comprehension, ou em português, abrangência de listas. Como o termo em português não retrata bem o que este recurso faz, vamos usar o termo em inglês mesmo.
List Comprehension é um recurso do Python que permite a criação de listas de forma simples, usando simplesmente uma expressão seguida de um for
que pode conter outros for
e/ou if
dentro dele.
Tudo ficará mais claro ao partirmos para os exemplos.
Então, vamos colocar a mão na massa! Abra o shell do Python.
Lembre-se que o que deve ser digitado estará precedido de >>>
ou ...
, assim como aparecerá no shell do python.
Se por acaso você não entendeu do que estou falando, é aconselhável que você leia antes os posts anteriores que te deixarão em dia com tudo que vimos até agora.
- Introdução ao Python
- Blocos de Código em Python
- Estruturas Condicionais em Python - 1
- Estruturas Condicionais em Python - 2
- Estruturas de Repetição - while
- Estruturas de Repetição - for
- Estruturas de Dados do Python - 1
- Estruturas de Dados do Python - Listas
Procure entender exatamente o que acontece em cada exemplo. Vamos lá!
>>> l = [1, 2, 4]
>>> [3 * x for x in l]
[3, 6, 12]
>>> [2 * x for x in l if x > 3]
[12]
>>> 5 * x for x in l if x < 0]
[]
>>> [[x, 2*x] for x in l]
[[1, 2], [2, 4], [4, 8]]
>>> [(x, 2*x) for x in l]
[(1, 2), (2, 4), (4, 8)]
>>> l1 = [0, 1, 2]
>>> l2 = [1, 2, 3]
>>> [x * y for x in l1 for y in l2]
[0, 0, 0, 1, 2, 3, 2, 4, 6]
>>> [l1[i] * l2[i] for i in range(len(l1))]
[0, 2, 6]
As instruções são sempre dadas no mesmo padrão:
[<expressao> for <variável> in <lista> [if <condição>] [for...]]
*** As estruturas entre [] são opcionais. ***
Agora chegamos ao ponto em que devemos responder ao desafio do último post da série Python 101 para prosseguir.
“Quem imagina como fazer uma matriz em Python usando o que vimos hoje?”
A resposta é: Criar listas de listas!
Então, se fizermos:
>>> m = [[1, 2, 3],[2, 3, 4]]
Teremos a matriz m com 2 linhas e 3 colunas, contendo na primeira linha os valores 1, 2, 3
e na segunda os valores 2, 3, 4
.
Assim, podemo usar list comprehention
também para criarmos matrizes. Chamamos este recurso de Nested List Comprehention (nested = aninhado).
Vejamos o seguinte exemplo:
>>> m = [
... [1, 2, 3],
... [4, 5, 6],
... [7, 8, 9],
... ]
Aqui, criamos uma matriz 3x3 com os valores de 1 a 9. Agora, veja uma forma de trocar as linhas com as colunas da matriz m:
>>> [[linha[i] for linha in m] for i in [0, 1, 2]]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Acho que por hoje, este recurso está bem ilustrado. Não deixe de enviar dúvidas e opiniões nos comentários abaixo!
Até o próximo post!