首页 > 解决方案 > 从具有重复元素的列表中提取元素

问题描述

如何获取列表的子集,以使特定长度的组合仅出现一次。

例如。a=[1, 1, 2, 3, 4, 4, 5, 5]

a我想获得类似的东西:

[(1,2),[1,3,4,4,5,5]],[(1,2,3),[1,4,4,5,5],...

我尝试使用组合,但大多数结果与问题无关。任何人都可以帮忙吗?

标签: python-3.xlistsetcombinations

解决方案


你提供的信息很少,但这是我理解的一个镜头

a=[1, 1, 2, 3, 4, 4, 5, 5]
result=[]
for i in range(1,7):
    b=a.copy()
    sub_tuple=[]
    for j in range(1,i):
        x=b.pop(b.index(j))
        sub_tuple.append(x)
    result.append([tuple(sub_tuple), b])
print(result[2:])
>>> [[(1, 2), [1, 3, 4, 4, 5, 5]], [(1, 2, 3), [1, 4, 4, 5, 5]], [(1, 2, 3, 4), [1, 4, 5, 5]], [(1, 2, 3, 4, 5), [1, 4, 5]]]

推荐阅读