检查列表中是否始终跟随另一个项目 - Python

时间:2018-05-08 15:49:52

标签: python regex list

我想检查一个项目是否始终在列表中跟随另一个项目。我想出了这个非常陈腐的例子......假设我想检查以下列表中“a”后面是否总是跟着“b”:

list = ['x','y','z','a','b','2','3','5','2','1','5','fds','f','s','a','b']

然后,理想情况下,如果每次看到“a”时函数都会返回TRUE,则直接后跟“b”。谁能帮我这个?也许我在这里遗漏了一些非常简单的东西。

2 个答案:

答案 0 :(得分:4)

all(a != 'a' or b == 'b' for a, b in zip(list[:-1], list[1:]))

答案 1 :(得分:2)

您可以将allzip一起用于O(n)解决方案。

itertools.islice用于避免制作新列表的费用。您也可以使用以下函数进行包装。

from itertools import islice

def fun(lst, val1, val2):
    return all(j==val2 for i, j in zip(lst, islice(lst, 1, None)) if i==val1)

lst = ['x','y','z','a','b','2','3','5','2','1','5','fds','f','s','a','b']

res = fun(lst, 'a', 'b')

print(res)  # True