List comprehension

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

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 pode ser percebida através do seguinte exemplo e é muito semelhante àquela usada na teoria dos conjuntos para definir um conjunto:

S=\{x|x \in \mathbb{N}, x^2>3\}

Como pode-se perceber, S é uma lista formada por todos os números x que pertencem ao ao conjunto dos Naturais, tal que x^2>3. Em linguagem Haskell, por exemplo, a sintaxe das lista de compreensão poderia ser escrita da forma:

S = [ x | x←[0..], x^2>3 ]

onde, 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á havia construtores similares na SETL.

Formas de list comprehension [editar]

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 a partir 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)

Ver também [editar]

Referências [editar]

  • List Comprehension no Dicionário Livre de Computação, Editor Denis Howe.
  • Philip Wadler [1] Comprehensions.
Haskell
Python
Common Lisp
Axiom