python列表元素序列成员关系

2024-05-19 06:22:13 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个引用序列,它是一个列表或元组:

reference = ['a', 'b', 'c', 'd']

我想检查一下参考序列中是否存在序列:

^{pr2}$

是否有内置函数来检查这种序列成员关系? 谢谢您!在


Tags: 函数列表关系成员序列内置元组reference
2条回答

我找到了一个相关的模块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'

相关问题 更多 >

    热门问题