filter
, map
และreduce
ทำงานอย่างสมบูรณ์ใน Python 2 นี่คือตัวอย่าง:
>>> 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
แต่ใน Python 3 ฉันได้รับผลลัพธ์ต่อไปนี้:
>>> 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
ฉันจะขอบคุณถ้ามีคนอธิบายให้ฉันฟังว่าทำไมถึงเป็นเช่นนั้น
สกรีนช็อตของรหัสเพื่อความชัดเจนเพิ่มเติม: