假设我有以下列表lst=[1,1,2,2,3,3,4,4,5,5,6,6]
。如何使用itertools获得4个数字的所有可能组合?我的问题是存在重复项,我想将它们视为相同的子集,例如[1,1,2,3]
与[1,1,2,3]
相同,即使1表示不同的位置也代表相同的集合。知道如何进行吗?
我尝试过的例子:
listOfCombinations = [x for x in itertools.combination(lst, 5)]
答案 0 :(得分:2)
由于set
不允许重复,因此您可以考虑保留set
个结果组合:
lst = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6]
res = set()
for c in itertools.combinations(lst, 4):
res.add(c)
print(res)
# {(2, 5, 6, 6), (2, 4, 4, 6), (2, 4, 4, 5), (1, 4, 4, 5) ...}
或者,就像 @ juanpa.arrivillaga 所述,
res = set(itertools.combinations(lst, 4))