2024-05-19 06:22:13 发布
网友
假设我们有一个引用序列,它是一个列表或元组:
reference = ['a', 'b', 'c', 'd']
我想检查一下参考序列中是否存在序列:
是否有内置函数来检查这种序列成员关系? 谢谢您!在
我找到了一个相关的模块difflib.SequenceMatcher。在
difflib.SequenceMatcher
def sequence_membership(target, reference): get_eq = lambda x: [c for c in x if c[0]=='equal'] get_length = lambda x: x[2]-x[1] s = SequenceMatcher(None, target, reference) match_result = s.get_opcodes() overlapped = get_eq(match_result) if len(overlapped) ==1 and get_length(overlapped[0]) == len(target): return True else: return False >>> sequence_membership(target1,reference) True >>> sequence_membership(target2,reference) False >>> sequence_membership(target3,reference) False >>> sequence_membership(target4,reference) False >>> sequence_membership(target5,reference) True
首先,您可以将list或tuple转换为string并查找引用中是否存在子字符串。一个简单的代码片段来解释我的想法:
reference = ['a', 'b', 'c', 'd'] target1 = ['a', 'b', 'c'] # true list2str = lambda ref: "".join(ref) base = list2str(reference) t1 = list2str(target1) if t1 in base: print 'found' else: print 'unfound'
我找到了一个相关的模块
difflib.SequenceMatcher
。在首先,您可以将list或tuple转换为string并查找引用中是否存在子字符串。一个简单的代码片段来解释我的想法:
相关问题 更多 >
编程相关推荐