在python中迭代未知数量的嵌套循环

ran*_*dom 17 python combinations list

我有可变数量的用户定义列表,每个列表包含单词.例如,可能有三个列表,如下所示:

list1 = ["THE", "A"]
list2 = ["ELEPHANT", "APPLE", "CAR"]
list3 = ["WALKED", "DROVE", "SAT"]
Run Code Online (Sandbox Code Playgroud)

我想要的是迭代每个列表中的每个组合,根据已知单词的字典检查每个组合,以查看哪个单词分组最像字典.这意味着迭代将是这样的:

[
    "THE ELEPHANT WALKED",
    "THE APPLE WALKED",
    "THE CAR WALKED",
    "THE ELEPHANT DROVE",
    "THE APPLE DROVE",
    "THE CAR DROVE",
    # ...
    "A CAR SAT",
]
Run Code Online (Sandbox Code Playgroud)

问题是可以有任意数量的列表,每个列表可以包含可变数量的项目.我知道递归可以用于此,但我需要一个没有递归的解决方案.我一直存在的问题是,可能存在可变数量的列表,否则我只会写:

for a in list1:
    for b in list2:
        for c in list3:
            ...
Run Code Online (Sandbox Code Playgroud)

但我不知道在哪里停止......

Eri*_*ric 28

itertools.product 完全符合你的要求:

from itertools import product

lists = [
    ['THE', 'A'],
    ['ELEPHANT', 'APPLE', 'CAR'],
    ['WALKED', 'DROVE', 'SAT']
]

for items in product(*lists):
    print items
Run Code Online (Sandbox Code Playgroud)

  • 鉴于他不知道列表的数量,``product(*lists)``可能更合适. (3认同)