在 python 的最短时间内找到列表的所有子列表

Find all sublist of list in minimum time in python

我必须在最短的时间内找到列表的所有子列表 我已经尝试过了,但是它花费了很多时间

X=[]
for i in range(len(N)+1):
    for j in range(len(N)+1):
        c=N[i:j]
        X.append(c)
X2 = [x for x in X if x != []]

使用 itertools 可能比使用嵌套 for 循环更快。

代码

from itertools import chain, combinations

def sublist(ls):
    chain_obj = chain.from_iterable(combinations(ls, r) for r in range(1,len(ls)+1))
    for i in chain_obj:
        print(i)

ls=['1','2','3']
sublist(ls)

输出

('1',)
('2',)
('3',)
('1', '2')
('1', '3')
('2', '3')
('1', '2', '3')

编辑 1

希望这对您有所帮助,

from itertools import combinations

def sublist(ls):
    res = [ls[x:y] for x, y in combinations( range(len(ls) + 1), r = 2)]
    print(res)

ls=['1','2','3','4']

print(sublist(ls))

输出

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