Python 如何匹配列表中的精确匹配

Python 如何匹配列表中的精确匹配,python,list,Python,List,如何检查B是否以相同的连续顺序出现在A中?在下面的示例中,99、3、2就是这样的: A = [0, 3, 123, 0, 99, 3, 2, 1, 2, 33, 1, 76] B = [99, 3, 2] 一个失败的例子是: A = [0, 321, 99, 0, 3, 0, 2, 0] 由于99,3、2元素不会连续出现 我尝试过: if B in A: print("yes") else: print("NO") 这是失败的 谢谢大家,, Jemma可以与生成器表达式一

如何检查B是否以相同的连续顺序出现在A中?在下面的示例中,
99、3、2
就是这样的:

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

B =  [99, 3, 2]
一个失败的例子是:

A = [0, 321, 99, 0, 3, 0, 2, 0]
由于
99,3、2
元素不会连续出现

我尝试过:

if B in A:
   print("yes")
else:
   print("NO")
这是失败的

谢谢大家,, Jemma

可以与生成器表达式一起使用,用于将长度
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)
返回与
b
长度相同的子序列的所有可能起始位置
b==a[i:i+len(b)]
从索引
i
开始创建长度
b
的列表,并将其与
b
进行比较,得到一个布尔值<如果生成的任何布尔值为
True
False
(如果所有值均为
False
),则code>any将返回
True

谢谢你,fab-你能告诉我吗:在(A[i:i+len(B)]中返回B,因为我在范围内(len(A)),特别是i:i+len(B),我理解len的长度,但其余的在我的head@NoobyD尝试运行“打印([A:i+len(B)],用于范围(len(A))]内的i”。A[i:i+len(B)]表示从长度len(B)的A[i]开始的A的子列表
def consecutive_in(B,A):
    return B in (A[i:i+len(B)] for i in range(len(A)))