簡體   English   中英

我如何將列表與 python 中的另一個列表匹配

[英]How do i match list with another list in python

我想在 python 中找到另一個列表值的第一個列表值,在這里我也使用matchset以及findall其他方法,但它在我的代碼中效果不佳。

在這里,我想匹配該patternlonglist列表中,並且模式始終以開頭。

pattern  = ['aaa','bbbb','ccc']
longlist = ['aaa845','bbbbPP44','XXX10','aaa420','ccc1','jjj7000','PPPP'] 

for i in longlist:  # longlist is json data, So this line required. After we can do it any code
  if filter(pattern.match, i): 
    print(i)

  # other tried
  if set(pattern) & set(longlist):
    print(i)

渴望 output: aaa845, bbbbPP44, aaa420, ccc1

誰能建議沒有多次FOR循環迭代和最快性能的最佳編碼風格?

如果找到匹配項,您可以將列表推導與使內部循環短路的any內容一起使用。

這將檢查 pattern 中的任何單詞是否“包含”在longlist的單詞中。

>>> pattern  = ['aaa','bbbb','ccc']
>>> longlist = ['aaa845','bbbbPP44','XXX10','aaa420','ccc1','jjj7000','PPPP']
>>> [i for i in longlist if any(j in i for j in pattern)]
['aaa845', 'bbbbPP44', 'aaa420', 'ccc1']

相反,如果您希望longlist中的單詞以模式中的任何單詞“開頭”,那么您需要像這樣更改條件。

>>> [i for i in longlist if any(i.startswith(j) for j in pattern)]
['aaa845', 'bbbbPP44', 'aaa420', 'ccc1']

在您給定的示例中,兩者都恰好產生相同的結果。

暫無
暫無

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

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