如何匹配列表中的完全匹配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