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)
[OUT]
1
2
3
4
5
6
7
8
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
[OUT]
2
4
6
8
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)
[OUT]
[2, 4, 6, 8]
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”.
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]
[OUT]
[4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
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!
Top comments (1)
Caramba, com isso o código fica muito mais limpo, muito obrigado pela dica, ótimo artigo!!