2014-09-22 70 views
0

有一个列表列表,使得每个内部列表的长度为1或n(假定n> 1)。 例如,我有一个名为在python中转置嵌​​套列表

>>> test= [['AA', 'aa'], ['BB', 'bb'], ['CC'],['DD','dd']] 

列表“”在结束时,我会让名单如下:

[('AA', 'BB', 'CC', 'DD'), 
('AA', 'BB', 'CC', 'dd'), 
('AA', 'bb', 'CC', 'DD'), 
('AA', 'bb', 'CC', 'dd'), 
('aa', 'BB', 'CC', 'DD'), 
('aa', 'BB', 'CC', 'dd'), 
('aa', 'bb', 'CC', 'DD'), 
('aa', 'bb', 'CC', 'dd')] 

我试图通过使用拉链来解决这个问题,但似乎不可能。 任何人都可以帮我吗?非常感谢。

回答

2

尝试使用itertools.product

from itertools import product 
a=[['AA', 'aa'], ['BB', 'bb'], ['CC'],['DD','dd']] 

for i in product(*a): 
    print i 

#output 
('AA', 'BB', 'CC', 'DD') 
('AA', 'BB', 'CC', 'dd') 
('AA', 'bb', 'CC', 'DD') 
('AA', 'bb', 'CC', 'dd') 
('aa', 'BB', 'CC', 'DD') 
('aa', 'BB', 'CC', 'dd') 
('aa', 'bb', 'CC', 'DD') 
('aa', 'bb', 'CC', 'dd')