Недавно Я задал вопрос здесь , где я хотел найти подсписки в большом списке.У меня похожий, но немного другой вопрос.Предположим, у меня есть этот список:
[['she', 'is', 'a', 'student'],
['she', 'is', 'a', 'lawer'],
['she', 'is', 'a', 'great', 'student'],
['i', 'am', 'a', 'teacher'],
['she', 'is', 'a', 'very', 'very', 'exceptionally', 'good', 'student']]
, и я хочу запросить его, используя matches = ['she', 'is', 'student']
, с намерением вывести из запрошенного списка все подсписки, содержащие элементы matches
в одном и том жепорядок.Единственное отличие от вопроса в ссылке заключается в том, что я хочу добавить параметр range
в функцию find_gappy
, чтобы он не получал списки, в которых разрыв между элементами превышает указанный диапазон.Например, в приведенном выше примере я хотел бы функцию, подобную этой:
matches = ['she', 'is', 'student']
x = [i for i in x if find_gappy(i, matches, range=2)]
, которая будет возвращать:
[['she', 'is', 'a', 'student'], ['she', 'is', 'a', 'great', 'student']]
Последний элемент не появляется, так как в предложенииshe is a very very exceptionally good student
, расстояние между a
и good
превышает предел диапазона.
Как я могу написать такую функцию? Разрыв между