gpt4 book ai didi

python - 为什么范围对象是 "not an iterator"?

转载 作者:IT老高 更新时间:2023-10-28 20:53:11 25 4
gpt4 key购买 nike

我写了这个并且期望 0:

>>> x = range(20)
>>> next(x)

相反,我得到了:

TypeError: 'range' object is not an iterator

但我以为它是发电机?

最初的答案与我最初对自己说的相同:它是可迭代的,而不是交互器。但是,如果两者都只是生成器,那并不能解释为什么会这样:

>>> x = (i for i in range(30))
>>> next(x)
0

最佳答案

范围对象是可迭代的。但是,它不是 迭代器

要获取迭代器,您需要调用 iter()第一:

>>> r=range(5,15)
>>> next(iter(r))
5
>>> next(iter(r))
5
>>> next(iter(r))
5
>>> next(iter(r))
5
>>> i=iter(r)
>>> next(i)
5
>>> next(i)
6
>>> next(i)
7
>>> next(i)
8
>>> iter(r)
<range_iterator object at 0x10b0f0630>
>>> iter(r)
<range_iterator object at 0x10b0f0750>
>>> iter(r)
<range_iterator object at 0x10b0f0c30>

编辑:但请注意不要在每次调用 next() 时调用 iter()。它在索引 0 处创建一个新的迭代器。

关于python - 为什么范围对象是 "not an iterator"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21803830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com