filter
, map
y reduce
fonctionnent parfaitement dans Python 2. Voici un exemple :
>>> def f(x):
return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def cube(x):
return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def add(x,y):
return x+y
>>> reduce(add, range(1, 11))
55
Mais dans Python 3, je reçois les sorties suivantes :
>>> filter(f, range(2, 25))
<filter object at 0x0000000002C14908>
>>> map(cube, range(1, 11))
<map object at 0x0000000002C82B70>
>>> reduce(add, range(1, 11))
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
reduce(add, range(1, 11))
NameError: name 'reduce' is not defined
J'apprécierais que quelqu'un puisse m'expliquer pourquoi.
Capture d'écran du code pour plus de clarté :
1 votes
En bref, la liste n'est pas le seul type de données. Si vous voulez une liste, dites que vous voulez une liste. Mais dans la plupart des cas, vous voulez quelque chose d'autre de toute façon.