Itertools无需重复和订购

时间:2019-10-03 20:34:29

标签: python itertools

假设我有以下列表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)]

1 个答案:

答案 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))