Генераторы и итераторы знаю не очень хорошо, может, вы поможете.
Мне нужно сравнить 2 списка (с помощью in), где первый список полностью включает второй список, и вернуть номер элемента 1-го списка, с которого идет совпадение. Например,
lst1 = ['мама', 'мыла', 'раму,', 'папа', 'кушал', 'борщ'] lst2 = ['раму', 'папа']
Нестрогое совпадение (in) нужно для того, чтобы, например, игнорировать пунктуацию.
На данный момент собираюсь решить задачу с помощью выражения
par = [x for x in range(len(lst1)) if lst2[0] in lst1[x:x+len(lst2)][0]]
lst2[0]
Пробовал еще такой код.
class MyIter: def __init__(self, iter, amp=1): self.iter = iter self.amp = amp def __iter__(self): for i in self.iter: yield i * self.amp def __call__(self): return iter(self) lst1 = 'мама мыла раму, папа кушал борщ' lst2 = 'раму папа' lst1 = lst1.split(' ') lst2 = lst2.split(' ') iterable = MyIter(range(len(lst2))) y = iterable() par = [x for x in range(len(lst1)) if lst2[next(y)] in lst1[x:x+len(lst2)][0]]
Поможете?