通过N进行循环,其中N是变量

时间:2019-03-16 20:03:02

标签: python algorithm python-3.6 permutation

所以我有这个问题: 想象一下,变量“ N”是一个整数。 我想要的是使此数量的“空格”的值所有组合,使它变得更容易的示例:

N = 2
result = []
for i in range(0,100,25):
    for j in range(0,100,25):
        result.append((i,j))
print(result)

这会给
 result = [(0, 0), (0, 25), (0, 50), (0, 75), (25, 0), (25, 25), (25, 50), (25, 75), (50, 0), (50, 25), (50, 50), (50, 75), (75, 0), (75, 25), (75, 50), (75, 75)]

目标是用25步​​给出0到100之间的所有组合。
3个变量也一样... [(0,0,0),(0,0,25),...,(25,50,50),...]
 如果我希望N = 3,则必须使用3进行循环。我想知道如何以其他方式对此进行编程,以便我可以输入任何N并给出正确的结果。

2 个答案:

答案 0 :(得分:2)

from itertools import product

N = 2
START = 0
END = 100
STEP = 25

rng = range(START, END, STEP)

for tup in product(rng, repeat = N):
    print(tup)

答案 1 :(得分:1)

您想要的是几个列表的笛卡尔乘积,并且模块product中有一个函数itertools,该函数就是这样的:

from itertools import product
result = list(product(range(0,100,25),
                      range(0,100,25)))
#[(0, 0), (0, 25), (0, 50), (0, 75), (25, 0), (25, 25), 
# (25, 50), (25, 75), (50, 0), (50, 25), (50, 50), 
# (50, 75), (75, 0), (75, 25), (75, 50), (75, 75)]

您可以根据需要传递任意多个范围,它们不必相同。

如果您以后打算循环使用生成的元组,请不要将product的结果强制转换为列表:

for tup in product(range(0,100,25), ...):
    do_something_with(tup)