No desenvolvimento de soluções é indispensável o uso de coleções para organizar os dados. Mas sabemos que o uso de coleções torna-se mais complexo na medida que a solução cresce. Uma das formas para simplificar a manipulação de coleções é usando Lists Comprehension.
As lists comprehension são expressões que permitem criar listas baseadas em listas existentes. As Lists comprehension seguem a notação dos conjuntos (da Matemática) em alternativa ao uso de maps e filters.
Como escrever uma List Comprehension?
Para escrever uma list comprehension existem 2 operações comuns:
- Selecionar os elementos que verifica uma condição;
- Calcular a expressão para cada elemento da lista.
Benefícios das Lists Comprehensions
- Os algoritmos ficam mais curtos e fáceis de entender;
- Tornam a solução mais declarativa;
- Reduzem o uso de maps, lambdas ou filters;
- Tornam o a solução mais precisa.
Embora este conceito tenha as suas origens nas linguagens funcionais, actualmente estão presentes em muitas das linguagens.
Exemplos de linguagens que permitem o uso de lists comprehension
- Linguagens Orientadas a Objectos: C#, Python, Java e Ruby;
- Linguagens Multiparadigma: Scala, Kotlin, Rust e Swift;
- Linguagens Funcionais: Erlang, Elixir, Haskell, F# e Lisp.
Sugestão: É aconselhavel criar uma expressão quando queremos descrever operações simples, para não torná-la ilegível. O melhor é entender como as linguagens funcionais resolvem este problema.
Exemplo: Neste exemplo vamos: Filtrar as idades dos adultos, obter o factorial e quadrado de cada elemento numa lista.
Linguagens: Python e Erlang.
Código em Erlang: list_comp.erl
Código em Python: list_comp.py
Executando o código Erlang
Executando o código Python