Python3for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]在语法书中定义了 for 循环。suite被定义为suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT。对我来说,很难理解 double for 循环如何适合列表理解的语法描述。有几个较小的问题:那么else呢?我假设它用于列表理解。那么正常的 for 循环可以使用else块吗?如果您能提供示例,我将不胜感激。
3 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
从语法的其他规则可以看出:
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
suite
要么是一个简单的语句(在一行中),例如:
for foo in bar: some_statement()
或者它是一个换行符,后跟一个缩进块(由语句组成)。
'else'
只是字符串“else”。
我通常else
将 for 循环的读作“无中断”:它在 for 循环完成后执行,但前提是它没有被break
. 它存在的原因是与 一致while
,它有一个else
声明,因为它基本上只是一个重复的if
。
Cats萌萌
TA贡献1805条经验 获得超9个赞
根据文档,如果循环结束而没有中断,则执行循环的else子句for。
看这两个例子:
for elem in range(5):
print(elem)
else:
print('ended')
在这里,suite部分对应于print(elem),输出将是:
0
1
2
3
4
ended
第二:
for elem in range(5):
if elem < 3:
print(elem)
else:
break
else:
print('ended')
在这里,suite部分对应于if elem < 3: print(elem) else: break,输出将是:
0
1
2
添加回答
举报
0/150
提交
取消