在python中以最短时间查找列表的所有子列表
我必须在最短的时间内找到列表的所有子列表 我试过了,但花了很多时间在python中以最短时间查找列表的所有子列表,python,list,loops,time,sublist,Python,List,Loops,Time,Sublist,我必须在最短的时间内找到列表的所有子列表 我试过了,但花了很多时间 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循环更快 代码 输出 编辑1 希望这有帮助 from itertools import combinations def sub
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循环更快
代码
输出
编辑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))
输出
使用
itertools
可能比使用嵌套for循环更快
代码
输出
编辑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,2,3,4],那么输出应该是[1],[1,2],[1,2,3,4],[1,2,3,4],[2,3],[2,3,4],[3,4]。你不应该在第一次创建所有这些空列表。“在最短时间内”并不意味着什么,但是…找到一个列表的所有子列表你指的是幂集?意思是如果输入是[1,2,3,4],那么输出应该是[1],[1,2],[1,2,3,4],[1,2,3,4],[2,3],[2,3,4],[3,4],[1,3],因为它不是iti的子列表,如果没有itif输入,它就不需要输出[1,2,3,4]otput应该是[[1]、[1,2]、[1,2,3]、[1,2,3,4]、[2,3]、[2,3,4]、[3]、[3]、[3]、[4]]在输出中也有(1,3)不应该存在,因为它不是iti的子列表。如果输入是[1,2,3,4],otput应该是[[1]、[1,2]、[1,2,3,4]、[2,3]、[2,3]、[4]。]
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']]