Писал сравнение списков, где важен порядок элементов. Написал:
#!/usr/bin/python3 # -*- coding: UTF-8 -*- import difflib class List: def __init__(self,lst1=[],lst2=[]): if lst1 is None: self.lst1 = [] else: self.lst1 = list(lst1) if lst2 is None: self.lst2 = [] else: self.lst2 = list(lst2) # Find shared elements (strict order), based on 'self.diff' def shared_strict(self): seqm = difflib.SequenceMatcher(a=self.lst1,b=self.lst2) output = [] for opcode, a0, a1, b0, b1 in seqm.get_opcodes(): if opcode == 'equal': output += seqm.a[a0:a1] return output # Check if 'lst1' fully comprises 'lst2' (strict order) def eats_strict(self): if self.lst2 == self.shared_strict(): return True if __name__ == '__main__': lst1 = ['черная','и','белая','кошка'] lst2 = ['белая','кошка'] print(List(lst1,lst2).eats_strict())
>>> lst1 = ['a','b','c','d','e','f','g'] >>> lst2 = ['e','f','g'] >>> lst1.index(lst2) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: ['e', 'f', 'g'] is not in list >>> lst2 in lst1 False