遍历一个未知的数量在Python的嵌套循环(Iterating over an unknown nu

2019-07-03 22:43发布

我具有可变数量的用户定义的列表,每个都包含字。 例如,可能有三个列表如下所示:

list1 = ["THE", "A"]
list2 = ["ELEPHANT", "APPLE", "CAR"]
list3 = ["WALKED", "DROVE", "SAT"]

我想是每一个组合遍历每个列表,检查每个针对已知字的字典,看看哪些字分组最喜欢的字典。 这意味着迭代是这样的:

[
    "THE ELEPHANT WALKED",
    "THE APPLE WALKED",
    "THE CAR WALKED",
    "THE ELEPHANT DROVE",
    "THE APPLE DROVE",
    "THE CAR DROVE",
    # ...
    "A CAR SAT",
]

问题是,可以有任意数量的列表,每个列表可以包含的项目数量可变的。 我知道递归可用于这一点,但我需要没有递归的解决方案。 我把遇到的问题是事实,有可能列出的可变量,否则我会这样写:

for a in list1:
    for b in list2:
        for c in list3:
            ...

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

Answer 1:

itertools.product不正是你想要什么:

from itertools import product

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

for items in product(*lists):
    print items


Answer 2:

使用Python 3.2

from itertools import product

[" ".join(i) for i in product(list1,list2,list3)]


文章来源: Iterating over an unknown number of nested loops in python