【问题标题】:the continue in for else in python在python中继续为else
【发布时间】:2015-06-27 01:22:31
【问题描述】:
for ele in eles:
   for i in xrange(10):
       try:
            #do something
           break
        except:
            continue
   else:
       if some condition:
           continue
       #do something

考虑上面的代码,我知道break 将打破内部for 循环,第一个continue 将继续内部for 循环,那么第二个continue 呢?会继续哪个for循环?

【问题讨论】:

  • 为什么不尝试一个例子看看呢?不过请考虑一下——当到达else 块时,内部for 循环是否仍在运行?
  • 插入print(),看看是哪一个continues。
  • @musefan:如果for 循环完成且未被中断,则执行else。例如。如果没有执行break 语句。例如在calculating prime numbers 时非常有用。
  • @MartijnPieters:啊,这很有趣……尽管使用else 可能不是关键字的最佳选择。另外,那个素数示例函数,你甚至需要else 吗?当然,它只返回 true 就可以工作,因为只有当它还没有返回 false 时才会被击中
  • @musefan:else 关键字的糟糕选择日前在 python-dev 邮件列表中被引用。 :)

标签: python


【解决方案1】:

最新的continue对外部for循环生效,如下例所示:

>>> for x in [1, 2, 3]:
...     for y in [4, 5, 6]:
...         print('x =', x, 'y =', y)
...     else:
...         continue
...     print('here')
... 
x = 1 y = 4
x = 1 y = 5
x = 1 y = 6
x = 2 y = 4
x = 2 y = 5
x = 2 y = 6
x = 3 y = 4
x = 3 y = 5
x = 3 y = 6

请注意,“这里”永远不会被打印出来。

另外,请注意内部 for 循环不能以任何方式继续:else 块在迭代器耗尽时执行(在我的示例中:当 [4, 5, 6] 中的所有 ys 都已打印时)当没有break 语句被执行时。因为迭代器已经用完了,所以没有办法让它产生更多的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-03
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多