Uma compreensão de lista é uma construção sintática disponível em algumas linguagens de programação para criação de uma lista baseada em listas existentes. Ela segue a forma da notação de definição de conjunto matemática (compreensão de conjunto) como forma distinta para uso de funções de mapa e filtro.

Visão geral

editar

Considere o seguinte exemplo na notação de definição de conjunto:

Isto pode ser lido, " é o conjunto de todos os números "2 vezes " onde é um item no conjunto dos números naturais (), pelo qual ao quadrado é maior que ."

Nesta versão anotada do exemplo:

  • é a variável que representa os membros de um conjunto de entrada
  • representa o conjunto de entrada, que neste exemplo é o conjunto dos números naturais
  • é uma função predicado que age como um filtro nos membros do conjunto de entrada
  • é uma função de saída que produz membros do novo conjunto de membros do conjunto de entrada que satisfaz a função predicado
  • colchetes contém a expressão
  • a barra vertical e a vírgula são separadores

As primeiras 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.

Exemplos em diferentes linguagens de programação

editar

As subseções a seguir fornecem alguns exemplos de sintaxe específica usada nas linguagens de programação.

Apesar do exemplo original denotar uma lista, algumas linguagens podem expressar que, assim em alguns daqueles casos mostramos como retirar um subconjunto de em vez de um subconjunto de .

Haskell

editar

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 = [ 2*x | x <- [0..], x^2 > 3 ]

Python

editar

A linguagem de programação Python possui uma sintaxe correspondente para expressar compreensões de lista. O equivalente próximo em Python para o exemplo acima está a seguir:

S = [2 * x for x in range(101) if x ** 2 > 3]

Compreensões de lista foram introduzidos na versão 2.0 do Python.[1]

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 Comprehensionno Dicionário Livre de Computação, Editor Denis Howe.
  • Philip Wadler [1] Comprehensions.
Haskell
Python
Common Lisp
Axiom

Referências

  1. Warsaw, Barry (2 de outubro de 2008). «PEP 202 – List Comprehensions». python.org 

📚 Artikel Terkait di Wikipedia

Atenção (aprendizado de máquina)

1016/0042-6989(94)00279-U  Rumelhart, David E.; McClelland, James L. (1986). Parallel Distributed Processing: Explorations in the Microstructure of Cognition

Neural gas

Association for Pattern Recognition. Progress in pattern recognition, image analysis and applications: 12th Iberoamerican Congress on Pattern Recognition

Modelo oculto de Markov

PMC 2722652. PMID 19589158. doi:10.1186/1471-2105-10-212  Sipos, I. Róbert. Parallel stratified MCMC sampling of AR-HMMs for stochastic time series prediction

Rede neural convolucional

conference of the Japan Society of Applied Physics  Zhang, Wei (1990). «Parallel distributed processing model with local space-invariant interconnections

Lista de linguagens de programação

org/resources/access/text/2013/12/102746804-05-01-acc.pdf http://news.mit.edu/2016/faster-parallel-computing-big-data-0913 https://api.github.com/repos/mirah/mirah https://api

Erlang (linguagem de programação)

primeira classe, funções de alta ordem e suporte a casamento de padrões (pattern matching). A imutabilidade de dados possibilita que estados de execução

Haskell (linguagem de programação)

desenvolvidas: versões paralelizáveis do MIT e Glasgow, ambas chamadas Parallel Haskell, outras versões paralelas e distribuídas chamadas Distributed Haskell