map
在Python 3中返回一个有状态的迭代器。有状态的迭代器在耗尽后可能只消耗一次,并且不产生任何值。
在您的代码段中,您多次 迭代器。list(m)
每次尝试重新创建列表时,对于第二次和下一次运行,创建的列表将始终为空(因为在第一次list(m)
操作中消耗了源迭代器)。
只需将迭代器转换为列表一次,然后再对该列表进行操作。
m = map(lambda x: x**2, range(0,4))
l = list(m)
assert sum(l) == 14
assert sum(l) == 14