Python从列表中创建多对多关系

时间:2014-02-17 13:41:38

标签: python list

我有一个列表,说terms = ['A', 'B', 'C', 'D']

这是创建像这样的多对多关系的列表列表或列表的最佳方法;

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

1 个答案:

答案 0 :(得分: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']]