Форум сайта python.su
4
Добрый день.
Генераторы и итераторы знаю не очень хорошо, может, вы поможете.
Мне нужно сравнить 2 списка (с помощью in), где первый список полностью включает второй список, и вернуть номер элемента 1-го списка, с которого идет совпадение. Например,
lst1 = ['мама', 'мыла', 'раму,', 'папа', 'кушал', 'борщ'] lst2 = ['раму', 'папа']
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]]
Отредактировано vanvanov (Янв. 12, 2016 03:18:58)
Офлайн
568
vanvanov
На него получаю StopIteration без объяснения ошибки.
Поможете?
next(iterator)
Retrieve the next item from the iterator by calling its next() method. If default is given, it is returned if the iterator is exhausted, otherwise StopIteration is raised.
New in version 2.6.
Офлайн