如何匹配列表中的完全匹配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)返回所有的子序列的可能起始位置与长度相同作为b。 b == a[i:i+len(b)]创建从索引i开始的长度为b的列表,并将其与b进行比较,结果为布尔值。 any将返回True如果所有值为False,如果生成的任何布尔值是True或False。
以上是 如何匹配列表中的完全匹配python 的全部内容, 来源链接: utcz.com/qa/259510.html

