[英]Python look for matching in lists
假設有一個名為PatternList = ['b', 0, 'e', 0]
。 如何檢查是否在另一個列表中, CompareList = ['r', 't', 'y', 'b', 'i', 'e', 'y', 'b', 't', 'e', 'r', 't', 'b', 'w', 't', 'e']
,包含在PatternList
包含的模式,有多少次?
在這種情況下,結果將為 2,因為 CompareList = ['r', 't', 'y', 'b' , 'i', 'e'' , y, 'b' , t, 'e' , 'r'、't'、'b'、'w'、't'、'e']。
注意:PatternList 可以讀作 'b',任何字符,'e',任何字符。
你可以用正則表達式做這樣的事情:
import re
l = ["b", "0", "e", "0"]
cl = ["r", "t", "y", "b", "i", "e", "y", "b", "t", "e", "r", "t", "b", "w", "t", "e"]
print re.findall(''.join(l).replace('0','.'), ''.join(cl))
print len(re.findall(''.join(l).replace('0','.'), ''.join(cl)))
輸出:
['biey', 'bter']
2
主意:
l
的元素並將0
替換為.
匹配cl
中的任何字符。cl
的元素。re.findall(res_of_step1, res_step_2)
當您將其轉換為正則表達式時,這看起來很簡單:
a=['b', 0, 'e', 0]
a1 = ['.' if i==0 else i for i in a]
>>> a1
['b', '.', 'e', '.']
>>> a2 = ''.join(a1)
compareList = ['r', 't', 'y', 'b', 'i', 'e', 'y', 'b', 't', 'e', 'r', 't', 'b', 'w', 't', 'e']
>>> compare_string=''.join(compareList)
>>> len(re.findall(a2, compare_string))
2
這是你想到的嗎? 您可以使用列表推導式:
>>> x = [1,2,3]
>>> y = [0,2,5,7,4,3]
>>> [i for i in x if i in y]
[2, 3]
編輯:
>>> len(set([i for i in x if i in y]))
2
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.