As funções filter() e map() foram introduzidas no Python há mais de 12 anos.
Muitos hoje defendem que elas sejam retiradas do Python na chamada versão 3000 já que as list comprehension são muito mais legíveis:
Dada uma funcão p(x) e uma lista s:
>>> def p(x): ... return x < 4 ... >>> s = range(10) >>> s [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Compare filter() com uma list comprehension:
>>> filter(p, s) [0, 1, 2, 3] >>> [x for x in s if p(x)] [0, 1, 2, 3]
Agora compare map() com uma list comprehension:
>>> map(p, s) [True, True, True, True, False, False, False, False, False, False] >>> [p(x) for x in s] [True, True, True, True, False, False, False, False, False, False]
Eu sempre tenho que pensar para entender o que filter() e map() estão fazendo ao passo que uma comprehension é só bater o olho. O que você acha? filter() e map() devem ser banidas?