我有可变数量的用户定义列表,每个列表都包含单词。例如,可能有三个列表如下:
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:
...
但我不知道在哪里停止......
答案 0 :(得分:28)
itertools.product
完全符合您的要求:
from itertools import product
lists = [
['THE', 'A'],
['ELEPHANT', 'APPLE', 'CAR'],
['WALKED', 'DROVE', 'SAT']
]
for items in product(*lists):
print items
答案 1 :(得分:1)
使用python 3.2
from itertools import product
[" ".join(i) for i in product(list1,list2,list3)]