![](/img/trans.png)
[英]How do I count how many times element in a list are an exact match of another list - python
[英]How do i match list with another list in python
我想在 python 中找到另一個列表值的第一個列表值,在這里我也使用match
和set
以及findall
其他方法,但它在我的代碼中效果不佳。
在這里,我想匹配該pattern
在longlist
列表中,並且模式始終以開頭。
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.