Python映射对象在缩减后变为空

Python映射对象在缩减后变为空,python,python-3.x,Python,Python 3.x,它非常混乱,以至于规范的map-reduceFP操作导致了破坏性的结果。地下发生了什么 map返回迭代器。您的reduce完全消耗了该迭代器,因此之后什么都没有了。如果将A转换为reduce之前的列表,它将按预期工作: A = map(lambda x: x * 2, [1, 2]) z = reduce(lambda x, y: x + y, A) print(z, list(A)) # outputs: 6 [] 术语/键入挑剔:map不返回生成器。它返回一个迭代器。@juanpa.ar

它非常混乱,以至于规范的
map-reduce
FP操作导致了破坏性的结果。地下发生了什么

map
返回迭代器。您的
reduce
完全消耗了该迭代器,因此之后什么都没有了。如果将
A
转换为
reduce
之前的列表,它将按预期工作:

A = map(lambda x: x * 2, [1, 2])
z = reduce(lambda x, y: x + y, A)

print(z, list(A))
# outputs: 6 []

术语/键入挑剔:
map
不返回生成器。它返回一个迭代器。@juanpa.arrivillaga在编程中,术语很重要,不仅仅是吹毛求疵。谢谢
A = list(map(lambda x: x * 2, [1, 2]))
z = reduce(lambda x, y: x + y, A)
print(z,A)   #prints 6 [2, 4]