测试代码:
import itertools
def main():
I=[1,2,3,4]
J=['A','B','C','D']
K=['a','b','c','d']
L=[I,J,K]
当我使用
print (list(itertools.product(I,J,K)))
效果很好,结果是
[(1, 'A', 'a'), (1, 'A', 'b'), (1, 'A', 'c'), (1, 'A', 'd'), (1, 'B', 'a'), (1, 'B', 'b'), (1, 'B', 'c'), (1, 'B', 'd'), (1, 'C', 'a'), (1, 'C', 'b'), (1, 'C', 'c'), (1, 'C', 'd'), (1, 'D', 'a'), (1, 'D', 'b'), (1, 'D', 'c'), (1, 'D', 'd'), (2, 'A', 'a'), (2, 'A', 'b'), (2, 'A', 'c'), (2, 'A', 'd'), (2, 'B', 'a'), (2, 'B', 'b'), (2, 'B', 'c'), (2, 'B', 'd'), (2, 'C', 'a'), (2, 'C', 'b'), (2, 'C', 'c'), (2, 'C', 'd'), (2, 'D', 'a'), (2, 'D', 'b'), (2, 'D', 'c'), (2, 'D', 'd'), (3, 'A', 'a'), (3, 'A', 'b'), (3, 'A', 'c'), (3, 'A', 'd'), (3, 'B', 'a'), (3, 'B', 'b'), (3, 'B', 'c'), (3, 'B', 'd'), (3, 'C', 'a'), (3, 'C', 'b'), (3, 'C', 'c'), (3, 'C', 'd'), (3, 'D', 'a'), (3, 'D', 'b'), (3, 'D', 'c'), (3, 'D', 'd'), (4, 'A', 'a'), (4, 'A', 'b'), (4, 'A', 'c'), (4, 'A', 'd'), (4, 'B', 'a'), (4, 'B', 'b'), (4, 'B', 'c'), (4, 'B', 'd'), (4, 'C', 'a'), (4, 'C', 'b'), (4, 'C', 'c'), (4, 'C', 'd'), (4, 'D', 'a'), (4, 'D', 'b'), (4, 'D', 'c'), (4, 'D', 'd')]
但是当我使用
print (list(itertools.product(L)))
结果是
[([1, 2, 3, 4],), (['A', 'B', 'C', 'D'],), (['a', 'b', 'c', 'd'],)]
那不是我想要的
如果L是一个嵌套列表,并且我想使用每个子列表中的元素进行组合怎么办?
我尝试了
print (list(itertools.product(i for i in L)))
但不起作用
PS:请不要告诉我使用print (list(itertools.product(L[0],L[1],L[2])))
当L中有大量元素时,我们无法列出所有元素
++++++++++++++++++++++++ EDIT ++++++++++++++++++++++++++++
好吧,我找到了答案
正确的是
import itertools
def main():
I=[1,2,3,4]
J=['A','B','C','D']
K=['a','b','c','d']
L=[I,J,K]
print (list(itertools.product(*L)))
main()