for/else语句中是否有等效的“elif”

在 if/elif/else 语句中,elif如果 theif为假,则检查 s ,如果 theifelifs 都为假,else则运行the 。

For 循环与else关键字类似- 如果循环没有遇到中断,则else运行内部代码。

因此,for 循环else相当于 if/elif/else 语句。然而,我的问题是,是否有等效于elif.

我认为这将是以下方面的事情:

  • 运行 for 循环。如果没有break遇到,则进入下一个指定的循环

  • 运行指定的 for 循环,如果没有break遇到,则进入下一个。

  • 重复直到没有更多的循环,如果break到目前为止没有
    遇到s ,则运行else.

我知道你可以模仿这种效果。正如您可以使用 if/else 语句来模拟elif

if condition:
    do_something()
else:
    if another_condition:
        do_something_else()
    else:
        default()

你可以用 for 循环来做到这一点:

for x in y:
    if condition:
        break
else:
    for n in m:
        if another_condition:
            break
    else:
        default()

虽然上面的代码是有效的,就像 if/else 语句一样,但它很丑陋,我希望找到更好的替代方案。

回答

不,如果你看一下语法中的for语句:

for_stmt:
    | 'for' star_targets 'in' ~ star_expressions ':' [TYPE_COMMENT] block [else_block] 
    . . .

它以一个 optional 结尾else_block,但没有别的。我相信,您的模拟效果与您所获得的一样好。


以上是for/else语句中是否有等效的“elif”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>