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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值