我正在使用以下代码创建嵌套列表:
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]]
而不是删除相似的对象,而不必首先生成它们。确实,您不需要组合,而是需要重叠的块(除了包含多个奇数项的块,您的代码已经说明了这些,我在这里进行了修改)。