2011-10-12 114 views
4

我有每個元組的列表中有兩個元素:[('1','11'),('2','22'),('3','33'),...n]Python中加入元素的所有組合每個列表

我怎麼會發現,只有一次選擇的元組的一個元素每個元組的所有組合?

的示例的結果:

[[1,2,3],[11,2,3],[11,2,3],[11,22,33],[ 11,2,33],[11,22,3],[1,22,3],[1,22,33],[1,2,33]]`

itertools。組合給我所有的組合,但不保留從每個元組中只選擇一個元素。

謝謝!

回答

7

使用itertools.product

In [88]: import itertools as it 
In [89]: list(it.product(('1','11'),('2','22'),('3','33'))) 
Out[89]: 
[('1', '2', '3'), 
('1', '2', '33'), 
('1', '22', '3'), 
('1', '22', '33'), 
('11', '2', '3'), 
('11', '2', '33'), 
('11', '22', '3'), 
('11', '22', '33')] 
+0

+1:Yay itertools! – jathanism

1

你看了itertoolsdocumentation

>>> import itertools 
>>> l = [('1','11'),('2','22'),('3','33')] 
>>> list(itertools.product(*l)) 
[('1', '2', '3'), ('1', '2', '33'), ('1', '22', '3'), ('1', '22', '33'), ('11', '2', '3'), ('11', '2', '33'), ('11', '22', '3'), ('11', '22', '33')] 
相關問題