2017-05-30 72 views
3

结果为None,第二次为list(a)。任何人都有这方面的线索?为什么list()与对象分别显示不同的结果?

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

它是一个可迭代的,一旦你消耗了它们消失的值。 –

+2

因为'.iterkeys'返回一个单遍迭代器。 –

回答

7

iterkeys返回迭代,其中,因为任何迭代,可以在仅一次被迭代。

list消耗整个迭代器,所以后者不能提供更多的值,所以后续列表是空的。

相关问题