python将list转换为迭代器代码_将迭代器转换为list会改变i 下⾯的代码产⽣⼀些⾮常奇怪的结果import re
string = "test test test"
positions = re.finditer("test", string)
print (list(positions))
print (list(positions))
输出:
^{pr2}$
现在,我想我知道这⾥发⽣了什么。第⼀个list调⽤“耗尽”迭代器(因此它“向上使⽤迭代器”,就像在⽣成器中,在从迭代器创建列表的过程中⼀样),所以当第⼆次调⽤list时,迭代器消失了,我们得到⼀个空列表。下⾯的段落似乎证实了这⼀点,尽管我试图理解他们在这⾥说的⼀些事情,所以我对这个解释并不完全满意(如果这是正确的):A container object (such as a list) produces a fresh new iterator
python代码转换each time you pass it to the iter() function or use it in a for loop.
Attempting this with an iterator will just return the same exhausted
iterator object used in the previous iteration pass, making it appear
like an empty container.
我真的不明⽩他们在上⼀段的第⼀句话⾥在说什么,尤其是关于传递给iter()函数的内容,我也不知道他们是如何将for循环中的⽤法与⽣成新迭代器的列表联系起来的。不过,第⼆句话似乎更接近我在上⾯代码中最初所想的。在
如果有⼈能帮我理清这⾥的困惑,我将不胜感激。在
注意:
我使⽤的是python3.5.1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。