for/else语句中是否有等效的“elif”
在 if/elif/else 语句中,elif如果 theif为假,则检查 s ,如果 theif和elifs 都为假,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,但没有别的。我相信,您的模拟效果与您所获得的一样好。