2014-02-17 55 views
0

我有一个列表许多一对多的关系,说terms = ['A', 'B', 'C', 'D']Python中创建一个列表

这是创造最好的方式列表中,列表或列表的元组的许多一对多像这样的关系;

[['A','B'],['A','C'],['A','D'],['B','C'],['B','D'],['C','D']] 

回答

3

使用itertools.combinations()

from itertools import combinations 

list(combinations(terms, r=2)) 

演示:

>>> from itertools import combinations 
>>> terms = ['A', 'B', 'C', 'D'] 
>>> list(combinations(terms, r=2)) 
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')] 

这些元组,没有名单,但是这很容易,如果这纠正了一个问题:

>>> map(list, combinations(terms, r=2)) 
[['A', 'B'], ['A', 'C'], ['A', 'D'], ['B', 'C'], ['B', 'D'], ['C', 'D']] 
+0

那很酷!太感谢了! – richie