элегантный поиск под-списка в списке

Дан список, содержащий известный шаблон окруженный шумом, есть ли элегантный способ получить все элементы, соответствующие шаблону. См. ниже мой грубый код.

list_with_noise = [7,2,1,2,3,4,2,1,2,3,4,9,9,1,2,3,4,7,4,3,1,2,3,5]
known_pattern = [1,2,3,4]
res = []


for i in list_with_noise:
    for j in known_pattern:
        if i == j:
            res.append(i)
            continue

print res

мы получили бы2, 1, 2, 3, 4, 2, 1, 2, 3, 4, 1, 2, 3, 4, 4, 3

бонус:избегали добавления i, если полный шаблон не присутствует (т.е., разрешите 1,2,3,4, но не 1,2,3)

примеры:

find_sublists_in_list([7,2,1,2,3,4,2,1,2,3,4,9,9,1,2,3,4,7,4,3,1,2,3,5],[1,2,3,4])

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


find_sublists_in_list([7,2,1,2,3,2,1,2,3,6,9,9,1,2,3,4,7,4,3,1,2,6],[1,2,3,4])

[1,2,3],[1,2,3],[1,2,3]

Списки содержат именованные кортежи.

26
задан rikAtee 11 April 2012 в 14:03
поделиться