为什么两次调用列表构造函数会产生一个空列表?

时间:2016-01-05 17:56:40

标签: python

我正在学习python,我遇到了一个我不知道为什么

的问题
>>> a = [1,2,3,4]
>>> b = reversed(a)
>>> list(b)
[4, 3, 2, 1]
>>> list(b)
[]

为什么我第二次调用list(b)它返回一个空列表

1 个答案:

答案 0 :(得分:0)

原因是b不是反转列表本身,而是listreverseiterator。因此,当您第一次调用list()时,它将迭代b并从该迭代器的输出项创建一个新列表。当你第二次这样做时,b仍然是原始迭代器,并且已经遍历了所有项目,所以它不会迭代任何东西,导致一个空列表