Найти индексы последовательности в списке в Python

Я новичок и надеюсь, что это не слишком очевидно, но я просто не могу найти краткого и точного ответа на следующую проблему.

У меня есть два списка:

<code>a = [2,3,5,2,5,6,7,2]
b = [2,5,6]
</code>

Я хотел бы найти, когда все индексы второго списка (b) находятся в первом списке (a), так что я получаю что-то вроде этого:

индексы б в а:3, 4, 5 или жеb = a[3:6]

Ответы на вопрос(2)

a = [2,3,5,2,5,6,7,2]
b = [2,5,6]
for i in range(len(a)):
    if a[i] in b:
        print i

Конечно, вы должны отформатировать оператор печати по своему вкусу. Или не печатайте и не сохраняйте результат, скажем, в другом списке.

Удачи!

 05 мая 2012 г., 08:46
Нет. Проверьте пример вывода, который предоставил OP.
 05 мая 2012 г., 08:51
Единственный индекс в a, который не отображается на элемент в b, это 1 и 6. Так что правильный вывод не должен быть 0, 2, 3, 4, 5, 7?
 05 мая 2012 г., 08:56
Похоже, что ОП ищет подсписок вa это точно соответствуетb, Я отредактирую его вопрос, чтобы сделать его более понятным.
Решение Вопроса

>>> [(i, i+len(b)) for i in range(len(a)) if a[i:i+len(b)] == b]
[(3, 6)]

Или с циклом:

>>> indexes = []
>>> for i in range(len(a)):
...    if a[i:i+len(b)] == b:
...        indexes.append((i, i+len(b)))
... 
>>> indexes
[(3, 6)]
 09 мар. 2019 г., 11:29
Это кажется немного лучше:[(i, i+len(b)) for i in range(len(a)-len(b)+1) if a[i:i+len(b)] == b]
 user137637705 мая 2012 г., 22:30
Большое спасибо, сочетание этого ответа и комментария действительно помогло мне! :)
 05 мая 2012 г., 09:02
ваш диапазон понимания должен бытьxrange(len(a))в противном случае он не будет соответствовать seq, если его в конце.
 05 мая 2012 г., 09:10
@fraxel: Хороший улов, спасибо! :)

Ваш ответ на вопрос