繁体   English   中英

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

[英]Iterating over an unknown number of nested loops in python

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

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:
            ...

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

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

from itertools import product

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

for items in product(*lists):
    print(items)

使用 python 3.2

from itertools import product

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM