关于python:为什么带有对象的list()分别显示不同的结果?

Why list() with an object shows different results respectively?

本问题已经有最佳答案,请猛点这里访问。

结果是None,第二次是list(a)。 有人对此有线索吗?

1
2
3
4
5
6
7
8
>>> test = {1: 2, 3: 4}
>>> a= test.iterkeys()
>>> list(a)
**[1, 3]**
>>> list(a)
**[]**
>>> list(a)
[]


iterkeys返回一个迭代器,与任何迭代器一样,该迭代器只能迭代一次。

list消耗了整个迭代器,因此后者无法提供更多值,因此后续列表为空。