【问题标题】:Nesting instances of the same generator in Python [duplicate]在 Python 中嵌套同一生成器的实例 [重复]
【发布时间】:2012-05-19 07:41:38
【问题描述】:

假设我有一台发电机:

def mygen():
    for i in range(10):
        yield i

这如我所料:ij 的所有组合

for i in mygen():
    for j in mygen():
        print i, j

我认为这些是不同的例子。为什么它们不充当不同的实例?

g1 = mygen()
g2 = mygen()

for i in g1:
    for j in g2:
        print i, j

如果我尝试g1.next(),我会收到一个错误,因为没有剩余数据。

我正在运行 Python 2.7.1。

【问题讨论】:

  • 第一个 sn-p 调用 mygen 11 次,而第二个 - 只有两次。 Sapienti 坐。

标签: python generator nested-loops


【解决方案1】:

第一次迭代g2 会消耗它,因此当您尝试在以后尝试迭代它时没有任何剩余。

g1 = mygen()
for i in g1:
    g2 = mygen()
    for j in g2:
        print i, j

【讨论】:

  • 对。具体来说,在他使用for j in mygen(): 的OP 示例中,他正在为i 的每个值实例化一个新生成器。
  • 啊,是的。我想那是一个愚蠢的错误。我使用 Python 已经有一段时间了,但是从生成器的角度思考对我来说还是有点新鲜。谢谢!
猜你喜欢
  • 2011-09-19
  • 2011-02-03
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 2012-04-25
  • 2021-05-06
相关资源
最近更新 更多