如何匹配列表中的完全匹配python

如何检查A是否以相同的连续顺序出现B的精确匹配?在下面的示例99, 3, 2处于在于确切方式:如何匹配列表中的完全匹配python

A = [0, 3, 123, 0, 99, 3, 2, 1, 2, 33, 1, 76] 

B = [99, 3, 2]

A,其将失败的一个例子是:

A = [0, 321, 99, 0, 3, 0, 2, 0] 

作为99, 3, 2元件不连续出现。

我曾尝试做:

if B in A: 

print("yes")

else:

print("NO")

这种失败。

谢谢大家, 杰马

回答:

def consecutive_in(B,A): 

return B in (A[i:i+len(B)] for i in range(len(A)))

回答:

你可以使用any与发电机表达式的长度b的所有片与b比较:

>>> a = [0, 3, 123, 0, 99, 3, 2, 1, 2, 33, 1, 76] 

>>> b = [99, 3, 2]

>>> any(b == a[i:i+len(b)] for i in range(len(a) - len(b) + 1))

True

>>> a = [0, 321, 99, 0, 3, 0, 2, 0]

>>> any(b == a[i:i+len(b)] for i in range(len(a) - len(b) + 1))

False

range(len(a) - len(b) + 1)返回所有的子序列的可能起始位置与长度相同作为bb == a[i:i+len(b)]创建从索引i开始的长度为b的列表,并将其与b进行比较,结果为布尔值。 any将返回True如果所有值为False,如果生成的任何布尔值是TrueFalse

以上是 如何匹配列表中的完全匹配python 的全部内容, 来源链接: utcz.com/qa/259510.html

回到顶部