首页 > 解决方案 > 以尽可能低的复杂度生成给定列表的所有子序列

问题描述

我有一个整数元素列表,我想生成列表的所有子序列,我试过这段代码 -

def sequences(arr, n):
    sheet = []
    opsize = (2**n) 
    for counter in range( 1, (int)(opsize)) : 
        t = []
        for j in range(0, n) : 
            if (counter & (1<<j)):
                t.append(arr[j]) 
        sheet.append(t)
    return sheet

如果输入列表 - [1,2,2]

输出 - [ [1], [2], [1, 2], [2], [1, 2], [2, 2], [1, 2, 2] ]

但是对于 n 的任何高值都需要很长时间。谁能建议我任何其他方法以尽量减少其复杂性。

谢谢你。

标签: python-3.xlist

解决方案


推荐阅读