如何在Python中遍历高阶范围



在python中,我们可以使用range(x)0遍历到x-1。但是如果我想遍历一个高阶范围呢?例如,给定(a, b),我想遍历所有(x1, x2),使得0 <= x1 < a, 0<= x2 < b。如果维度是固定的,那么很容易,比如说它是k维(在我给出的例子中,k是2(,那么我们可以简单地对k个循环进行硬编码来实现它,但当维度也是一个变量时呢?有没有什么优雅的蟒蛇方式来处理这个问题?

使用itertools.product:

from itertools import product
for x, y, z in product(range(a), range(b), range(c)):
print( (x,y,z) )

具有可变数量的维度:

limits = [5, 3, 7, 6]
for v in product(*(range(n) for n in limits)):
print(v)

最新更新