从嵌套列表中删除相似的元素

问题描述 投票:0回答:1

我正在使用以下代码创建嵌套列表:

from itertools import combinations


def get_nested_list(arr, n, k):
    iterator = 0
    nest = []

    for i in range(1, n):

        for combo in combinations(arr, i):
            odd_num = 0

            for item in combo:
                if item % 2 != 0:
                    odd_num += 1

            if odd_num <= k:
                iterator += 1
                nest.append(combo)

    nest = [list(i) for i in nest]
    return nest


a = [1, 2, 3, 4]
b = len(a)
c = 1

print(get_nested_list(a, b, c))

这是我的输出:

[[1], [2], [3], [4], [1, 2], [1, 4], [2, 3], [2, 4], [3, 4], [1, 2, 4], [2, 3, 4]]

但是,我得到像[1,2][1,4]这样具有相同x值,[2, 4][3, 4]等具有相同y值的元素。如何创建包含完全不同的子列表的列表?这是我要完成的工作:

[[1], [2], [3], [4], [1, 2], [2, 3], [3, 4], [2, 3, 4]]
python list itertools
1个回答
0
投票

而不是删除相似的对象,而不必首先生成它们。确实,您不需要组合,而是需要重叠的块(除了包含多个奇数项的块,您的代码已经说明了这些,我在这里进行了修改)。

© www.soinside.com 2019 - 2024. All rights reserved.