List comprehension
Origem: Wikipédia, a enciclopédia livre.
List comprehension (em português, compreensão de lista) é um construtor de processamento de listas em linguagem de programação, a notação matemática é a sequinte:
Por exemplo, em linguagem Haskell a sintaxe das lista de compreensão pode ser escrita:
S = [ x | x<-[0..], x^2>3 ]
na lista [0..]
representa N, e x^2>3
representa a condição.
As primeias referências encontradas em linguagens sobre a notação de lista de compreensão foram por Rod Burstall e John Darlingtons em 1977 na NPL, mas já haviam construtores similares na SETL.
[editar] Formas de list comprehension
Em Haskell, list comprehensions podem ser também escritas com funções de alto-nível como map
e filter
. No mesmo acima, a notação S pode ser escrita como:
S = filter (\x -> x^2 > 3) [0..]
Em Python também há o conceito de list comprehensions. Um esboço da notação S:
L = range(100) # listas em Python são finitas, esta lista é de 0 a 99 S = [x for x in L if x**2 > 3]
O generator foi introduzido apartir do Python 2.4. Então a notação S usando geradores para iterar listas infinitas pode ser:
from itertools import count S = (x for x in count() if x**2 > 3)
[editar] Ver também
- Generator é outro exemplo de processamento de valores.
- Design pattern de software
[editar] Referências
- List Comprehension no Dicionário Livre de Computação, Editor Denis Howe.
- Philip Wadler [1] Comprehensions.
Haskell:
- The Haskell 98 Report, chapter 3.11 List Comprehensions.
- The Glorious Glasgow Haskell Compilation System User's Guide, chapter 7.3.4 Parallel List Comprehensions.
- The Hugs 98 User's Guide, chapter 5.1.2 Parallel list comprehensions (a.k.a. zip-comprehensions).
Python:
- Python Reference Manual, capítulo 5.2.4 List displays.
- PEP 202: List Comprehensions.
- Python Reference Manual, chapter 5.2.5 Generator expressions.
- PEP 289: Generator Expressions.
Common Lisp:
Axiom: