Найти весь подсписок списка за минимальное время в python - PullRequest
1 голос
/ 05 апреля 2020

Я должен найти все подсписки списка за минимальное время, которое я пробовал, но это занимает очень много времени

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 != []]

1 Ответ

0 голосов
/ 05 апреля 2020

при использовании itertools может быть быстрее, чем при использовании вложенных циклов.

Код

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']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...