簡體   English   中英

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

[英]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進行比較,得到一個布爾值。 如果所有生成的布爾值都為TrueFalse ,則any將返回True ,以防所有值都為False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM