Скорее не оптимизирован, просто демонстрирует общую стратегию:
tuple(small_list) in zip(big_list[:], big_list[1:], big_list[2:])
Прикольная молния делает это:
>>> zip(big_list[:], big_list[1:], big_list[2:])
[(1, 2, 5), (2, 5, 7), (5, 7, 2), (7, 2, 4), (2, 4, 2), (4, 2, 5), (2, 5, 67), (5, 67, 8), (67, 8, 5), (8, 5, 13), (5, 13, 45)]
Более оптимизированная версия:
from itertools import izip, islice
tuple(small_list) in izip(big_list, islice(big_list, 1, None), islice(big_list, 2, None))
Для обработки small_list длины любого размера:
from itertools import izip, islice
tuple(small_list) in izip(*(islice(big_list, i, None) for i in xrange(len(small_list))))