【发布时间】:2018-10-17 10:43:00
【问题描述】:
我想编写一个脚本来获取类别列表并返回将类别分成两组的独特方式。现在我有它的元组形式 (list_a, list_b),其中 list_a 和 list_b 的并集代表完整的类别列表。
下面我展示了一个包含类别 ['A','B','C','D'] 的示例,我可以获取所有组。但是,有些是重复的 (['A'], ['B', 'C', 'D']) 表示与 (['B', 'C', 'D'], ['A' ])。我如何只保留唯一的拆分?还有什么是这篇文章更好的标题?
import itertools
def getCompliment(smallList, fullList):
compliment = list()
for item in fullList:
if item not in smallList:
compliment.append(item)
return compliment
optionList = ['A','B','C','D']
combos = list()
for r in range(1,len(optionList)):
tuples = list(itertools.combinations(optionList, r))
for t in tuples:
combos.append((list(t),getCompliment(list(t), optionList)))
print(combos)
[(['A'], ['B', 'C', 'D']),
(['B'], ['A', 'C', 'D']),
(['C'], ['A', 'B', 'D']),
(['D'], ['A', 'B', 'C']),
(['A', 'B'], ['C', 'D']),
(['A', 'C'], ['B', 'D']),
(['A', 'D'], ['B', 'C']),
(['B', 'C'], ['A', 'D']),
(['B', 'D'], ['A', 'C']),
(['C', 'D'], ['A', 'B']),
(['A', 'B', 'C'], ['D']),
(['A', 'B', 'D'], ['C']),
(['A', 'C', 'D'], ['B']),
(['B', 'C', 'D'], ['A'])]
我需要以下物品:
[(['A'], ['B', 'C', 'D']),
(['B'], ['A', 'C', 'D']),
(['C'], ['A', 'B', 'D']),
(['D'], ['A', 'B', 'C']),
(['A', 'B'], ['C', 'D']),
(['A', 'C'], ['B', 'D']),
(['A', 'D'], ['B', 'C'])]
【问题讨论】:
标签: python python-3.x list tuples unique