DEV Community

Matheus Filgueiras
Matheus Filgueiras

Posted on

8 8 8 8 8

Python4noobs: Entendendo List Comprehension

Todo programador já se encontrou em momentos que precisava repetir determinadas ações no seu código. Entretanto, algumas repetições na programação pode ser extensa, tornando a sua leitura mais difícil, sendo necessário encontrar maneiras de melhorar o entendimento do código. Uma maneira de resolver esse problema, é a utilização de um conceito chamado List Comprehension.

De início, é importante relembrar o que é uma estrutura de repetição, assim facilitando a comparação com o conceito que será discutido ao decorrer do artigo.

[IN]
for i in range(1,9):
    print(i)
Enter fullscreen mode Exit fullscreen mode
[OUT]
1
2
3
4
5
6
7
8
Enter fullscreen mode Exit fullscreen mode

Este é o exemplo mais básico, onde a cada loop o contador i será printado e em sequência aumentará seu valor em 1.

Você pode estar se perguntando, "porque nos parâmetros da função range está até 9 e no resultado só vai até 8?"

Entendendo o range

Antes de aprender o que é List Comprehension, acho válido esclarecer como funciona a função range que apareceu no exemplo anterior. O range tem 3 parâmetros que são importantes entender, são eles:

  • Start -> Indica qual é o número que irá começar a estrutura de repetição.

  • Stop -> Indica qual é o número que irá terminar a estrutura de repetição, subtraído de 1. Pois, é importante lembrar que em listas de python o primeiro termo tem índice 0, enquanto o segundo termo tem índice 1, e assim por diante.

  • Step -> Parâmetro opcional que define o quanto será adicionado ou subtraído do contador. Se não for determinado um valor, fica definido com o valor padrão que é 1.

List Comprehension

List comprehension nada mais é que uma forma de escrever maps, filters, loops e até mesmo funções de uma maneira sucinta e direta, facilitando o entendimento do código, não só para você no futuro, mas para outras pessoas.

Vamos dar uma olhada na seguinte comparação:

#Exemplo 1
[IN]
numeros = [1,2,3,4]

for num in numeros:
    dobro = num * 2
    print(dobro)
    num += 1
Enter fullscreen mode Exit fullscreen mode
[OUT]
2
4
6
8
Enter fullscreen mode Exit fullscreen mode

A partir de uma lista de números cada número que a compõe tem o seu valor dobrado. Perceba que, no total são utilizadas 5 linhas de código.

#Exemplo 2
[IN]
numeros = [1,2,3,4]

numeros_dobrados = [num * 2 for num in numeros] #List comprehension
print(numeros_dobrados)
Enter fullscreen mode Exit fullscreen mode
[OUT]
[2, 4, 6, 8]
Enter fullscreen mode Exit fullscreen mode

Como foi mostrado, o resultado é o mesmo do exemplo anterior, porém em apenas 2-3 linhas e de maneira muito mais legível.

Se ainda restou alguma dúvida, o esquema abaixo disseca como uma List Comprehension pode ser “construída”.

list_comprehension.png

Assim, em apenas uma linha uma operação está sendo designada para cada elemento de uma lista.

Por fim, além das estruturas de repetição, também pode-se utilizar as estruturas de condição.

[IN]

numeros_dobrados = [num * 2 for num in range(1,21) if num % 2 == 0]
Enter fullscreen mode Exit fullscreen mode
[OUT]
[4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
Enter fullscreen mode Exit fullscreen mode

Nesse exemplo, é adicionado a condicional de que todos os números divididos por 2 e tem como resultado 0, será dobrado.

Conclusão

Ao final desse artigo foi possível relembrar o conceito de estrutura de repetição e também como melhorar sua legibilidade através do conceito de List Comprehension.

Por fim, esse artigo foi inspirado em anotações pessoais que realizei durante o #100DiasDeCodigo, por gostar do conceito decidi aprofundar e trazer mais detalhes sobre o conteúdo. Agradeço totalmente à comunidade da He4rt por incentivar e ajudar na escrita de artigos.

Qualquer Feedback é bem-vindo.

Obrigado por ler e compartilhar!

Referências

programiz

learnXinYminutes

w3schools

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (1)

Collapse
 
clintonrocha98 profile image
Clinton Rocha

Caramba, com isso o código fica muito mais limpo, muito obrigado pela dica, ótimo artigo!!

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay