Pergunta

Eu sei sobre mapa / reduzir alghoritm e seu uso. Ele está usando funções que são chamadas Mappers e Redutores, mas também encontrar pessoas usam a palavra filtros.

são filtros mesmos como Mappers ou há alguma diferença significativa?

Foi útil?

Solução

Um filtro é como um mapa para o qual a função passada é sempre uma "função característica", que é uma função que retorna "sim" ou "não" à pergunta "faz isso pertence aqui?"

Em outras palavras, pense em um conjunto definido como {x | x ? X e P (x) }. Filtro leva o conjunto de base, testes para ver se P (x) é verdade, e retorna apenas os membros para os quais é verdade.

Assim { x | x é um número natural e ímpar ( x )} é {1,3,5,7 ...}.

A Mapa aplica uma função arbitrária, de modo que você pode pensar que como um conjunto como {y | x ? X e y = f (x) }.

Assim { y | x é um número natural e y = x² } é {1,4,9,16, ...}.

Outras dicas

Filtro leva uma "lista" e uma função, aplica a função de cada membro da lista e retorna uma nova lista contendo apenas membros onde a aplicação da função retornado verdadeiro. Por exemplo:

l = [1,2,3,4]
l = filter(lambda x: x < 3, l)
print l # [1,2]

Mapa faz a mesma coisa, mas retorna uma lista contendo os resultados da aplicação de função:

l = [1,2,3,4]
l = map(lambda x: x < 3, l)
print l # [True,True,False,False]

Um filtro determina se um item deve ser mantido ou removido. Um mapeador apenas traduz o valor para outro. Como consequência: O conjunto de uma operação de mapa de saída é sempre igual em tamanho com o conjunto de entrada. A saída de uma operação de filtro é menor do que o conjunto de entrada.

De um modo geral, funções de mapa ter um conjunto de entrada e uma função de, e retorna um conjunto contendo a função de saída para cada elemento de entrada. Um filtro leva um conjunto de entrada e uma função booleana, e retorna um conjunto contendo os valores de entrada para o qual o retorno da função verdadeiro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top