for … else…的用法
这是python官方文档中combinations的写法
当迭代的对象迭代完并为空时,位于else的子句将执行,而如果在for循环中含有break时则直接终止循环,并不会执行else子句。
def combinations(iterable, r):
# combinations('ABCD', 2) --> AB AC AD BC BD CD
# combinations(range(4), 3) --> 012 013 023 123
pool = tuple(iterable)
n = len(pool)
if r > n:
return
indices = list(range(r))
yield tuple(pool[i] for i in indices)
while True:
for i in reversed(range(r)):
if indices[i] != i + n - r:
break
else:
return
indices[i] += 1
for j in range(i+1, r):
indices[j] = indices[j-1] + 1
yield tuple(pool[i] for i in indices)
本文详细解析了Python中for...else结构的使用方法,阐述了在迭代对象完成且未遇到break时else子句的执行逻辑。通过具体示例combinations函数,展示了else子句在循环控制流中的独特作用。
7088

被折叠的 条评论
为什么被折叠?



