按顺序检查列表中的多个项目

时间:2017-11-04 19:17:10

标签: python python-3.x

我想检查列表中的元素是否包含字符串,但必须按顺序排列。

示例:

x = ['a', 'b', 't', 'd', 'e']

z = 'bt'

我想看看z是否按顺序在x中。

我知道我能做到:

if all(item in x for items in z):
    # do something

但是这不会检查顺序('bt'中的t不必在b之后可能出现在列表中的任何位置)

我知道你可以做一个嵌套循环,或者将列表转换为字符串然后使用它但是效率不高......

任何帮助?

1 个答案:

答案 0 :(得分:0)

如果列表包含该字符,您可以缩小列表。使用此方法:

def control(x, z):
    for char in z:
        if char not in x:
            return False
        else:
            x = x[x.index(char) + 1:]
    return True

让我们试试:

x = ['a', 'b', 't', 'd', 'e']
z1 = 'ba'
z2 = 'bt'
z3 = 'bd'

print(control(x, z1))
print(control(x, z2))
print(control(x, z3))

输出:

False
True
True