【问题标题】:Python: next() function returns unexpected 'None'Python:next() 函数返回意外的“无”
【发布时间】:2018-04-19 06:51:27
【问题描述】:

这是我的第一个问题,所以我会尽量说清楚。 我注意到 next() 函数,它似乎比经典的嵌套循环更优雅。 所以我运行了一个简单的代码:

liste=['foo','bar','baz']

try:
    G= (print(x) for x in liste)
    print(next(G))
    print(next(G))
    print(next(G))
    print(next(G))

except StopIteration:
    print("That was obviously expected")

我期待:

foo
bar
baz
That was obviously expected

出现在我的屏幕上,但我得到了:

foo
None
bar
None
baz
None
That was obviously expected

所以我的问题很简单:

为什么运行后会有None回复?

什么是好方法,什么时候是使用next()的好时机?

谢谢

【问题讨论】:

  • 您正在打印打印功能的结果。更改行 G = (x for x in liste)
  • print 返回 None,所以 G 是 Nones 的生成器,把 print(x) 改成 x
  • 好吧,很愚蠢,我必须同意。谢谢

标签: python next


【解决方案1】:

因为print() 返回None

你实际上是在做print(print(..))。内部print 打印如您所料('foo',...),但外部打印打印,这是None 的来源。

【讨论】:

    【解决方案2】:
    liste=['foo','bar','baz']
    
    n = iter(liste)
    
    print(next(n))
    print(next(n))
    print(next(n))
    

    解释:

    这是生成器的示例。使用iternext 我们可以生成值

    n = iter(liste)
    
    print(next(n))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      相关资源
      最近更新 更多