如何在Python中制作n维嵌套for循环?

Jon*_*sky 5 python loops dimensions

我有以下情况:

for x1 in range(x1, x2):
    for x2 in range(x3, x4):
        for x3 ...
            ...
                f(x1, x2, x3, ...)
Run Code Online (Sandbox Code Playgroud)

如何将其转换为一种机制,在这种机制中我只告诉python制作n个嵌套循环,其中变量名是x1,x2,x3,x4,...?我当然不想手动编写所有可能性,因为可能有很多维度.

Oli*_*çon 6

你想要做的是迭代产品.使用itertools.product.

import itertools

ranges = [range(x1, x2), range(x3, x4), ...]

for xs in itertools.product(*ranges):
    f(*xs)
Run Code Online (Sandbox Code Playgroud)

import itertools

ranges = [range(0, 2), range(1, 3), range(2, 4)]

for xs in itertools.product(*ranges):
    print(*xs)
Run Code Online (Sandbox Code Playgroud)

产量

0 1 2
0 1 3
0 2 2
0 2 3
1 1 2
1 1 3
1 2 2
1 2 3
Run Code Online (Sandbox Code Playgroud)