我有一个列表,说terms = ['A', 'B', 'C', 'D']
这是创建像这样的多对多关系的列表列表或列表的最佳方法;
[['A','B'],['A','C'],['A','D'],['B','C'],['B','D'],['C','D']]
答案 0 :(得分:3)
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']]