在代码中想查看map 函数执行结果的list,使用了如下的代码:
```
def myfunc():
data = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
print(list(data))
return data
```
在获得函数结果后,继续使用data这个迭代器,发现获得结果为空,如:
print(list(data))
结果为 []
原因分析:
迭代器只能执行一次,调用list()函数的时候,已经将map迭代器执行过了,后续再执行一次,结果就会为空
例如:
```
data = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
print(len(list(data)))
print(len(list(data)))
```
两次打印的长度分别为5和0
原文链接:https://www.jianshu.com/p/9b4ead6272e6