[英]How to match an exact match in a list python
如何檢查B的完全匹配是否以相同的連續順序出現在A中? 在下面的示例99, 3, 2
以完全相同的方式在A中:
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
進行比較,得到一個布爾值。 如果所有生成的布爾值都為True
或False
,則any
將返回True
,以防所有值都為False
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.