所以我有这个问题: 想象一下,变量“ 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并给出正确的结果。
答案 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)