1. 循环
您通常可以使用itertools.product
或itertools.combinations
将嵌套循环转换为单个循环。
当循环独立时,使用product
. 例如,这些嵌套循环:
for x in range(3):
for y in range(5):
for z in range(7):
print((x, y, z))
成为单循环:
from itertools import product
for x, y, z in product(range(3), range(5), range(7)):
print((x, y, z))
当循环索引必须不同时,您可以使用combinations
. 例如,这些嵌套循环:
for start in range(length - 1):
for end in range(start + 1, length):
print((start, end))
成为单循环:
from itertools import combinations
for start, end in combinations(range(length), 2):
print((start, end))
有关使用 的真实示例,请参见此处,有关使用的示例,请参见此处。product
combinations
2.条件
当您有很多if
语句时,通常可以重新组织代码以节省缩进步骤,同时使代码更清晰。基本思想是首先处理错误,然后处理可以return
立即处理的情况,以便条件的主体到目前为止不需要缩进(或者在许多情况下,根本不需要缩进)。例如,如果您有如下代码:
if x >= 0:
if x == 0:
return 1
else:
# ... main body here ...
return result
else:
raise ValueError("Negative values not supported: {!r}".format(x))
然后你可以像这样重新组织代码:
if x < 0:
raise ValueError("Negative values not supported: {!r}".format(x))
if x == 0:
return 1
# ... main body here ...
return result
这为主体节省了两级缩进。