【问题标题】:Python: generator failPython:生成器失败
【发布时间】:2014-03-13 17:01:46
【问题描述】:
def sp():
    i = 0
    while True:
        for j in range(i):
            yield(j)
        i+=1

这个生成器应该是yield(0, i)range 中的所有整数,但它会在每次调用next() 时不断返回0。为什么?

谢谢。

【问题讨论】:

  • 你不能只做sp().next()。您需要实例化 (?) 生成器:s=sp(); s.next(); s.next();...
  • 但是如果你只想要 0, 1, 2, ... 那么你不想要range(i) 电话。

标签: python generator


【解决方案1】:

不,它没有。这是输出:

>>> s=sp()
>>> s
<generator object sp at 0x102d1c690>
>>> s.next()
0
>>> s.next()
0
>>> s.next()
1
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
3
>>> s.next()
0
>>> s.next()
1
>>> s.next()
2
>>> s.next()
3
>>> s.next()
4

这正是您所期望的。每次,您从 0 开始并转到 i 的任何值,然后再次从 0 开始返回到下一个值 i

【讨论】:

  • 哦,我知道我的错误在哪里了。谢谢!
猜你喜欢
  • 2013-09-16
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 2017-01-05
  • 2011-12-22
  • 2021-08-28
  • 2010-09-07
  • 2020-02-09
相关资源
最近更新 更多