我想检查列表中的元素是否包含字符串,但必须按顺序排列。
示例:
x = ['a', 'b', 't', 'd', 'e']
z = 'bt'
我想看看z是否按顺序在x中。
我知道我能做到:
if all(item in x for items in z):
# do something
但是这不会检查顺序('bt'中的t不必在b之后可能出现在列表中的任何位置)
我知道你可以做一个嵌套循环,或者将列表转换为字符串然后使用它但是效率不高......
任何帮助?
答案 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