python中的list 查找與過濾方法整合
python list 查找與過濾方法
查找list中是否有某個元素
這個是一個最基礎(chǔ)的操作,使用in操作符,如下所示:
3 in [1, 2, 3] # => True
過濾一個集合
過濾出滿足一定條件的所有元素,可以使用列表表達式或者生成器表達式:
matches = [x for x in lst if fulfills_some_condition(x)] matches = (x for x in lst if x > 6)
后者返回一個生成器,你可以將它想象成一個延后列表(lazy list)僅僅當你迭代它的時候才會被創(chuàng)建。順便說一下,第一個在py2中等價于
matches = filter(fulfills_some_condition, lst)
返回一個list。在python3中,filter不會返回一個list,而是一個類似于生成器的對象。
查找第一個匹配項
如果您只想要匹配條件的第一個元素(但是您還不知道它是什么),那么使用for循環(huán)是可以的(也可以使用else子句,但是都不太推薦)。推薦使用:
next(x for x in lst if ...)
如果沒有找到匹配項,則返回第一個匹配項或引發(fā)StopIteration異常。或者,您可以使用
next((x for x in lst if ...), [default value])
查找一個item的位置
查找item位置的基礎(chǔ)功能可以使用python數(shù)組的的index方法
[1,2,3].index(2) # => 1 [1,2,3].index(4) # => ValueError
但是,請注意,如果您的數(shù)組中有重復值,.index總是返回最前面的索引:……
[1,2,3,2].index(2) # => 1
如果有重復,你想要所有的索引,你可以使用enumerate()代替:
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
復雜數(shù)據(jù)查詢案例
假如有如下類型的數(shù)據(jù)
list=[{'id': '2', 'position': [3148.18, 4142.69]},{'id': '1', 'position': [3148.19, 142.69]}]
我想根據(jù)id來查找,并且獲得指定id的position。
list[next(index for (index, d) in enumerate(list1) if d["id"] == '2')]['position']
python過濾列表的技巧
過濾列表可以用循環(huán)、列表解析以及filter等。
下面以列表過濾出大于3的元素。
#列表過濾的幾種方法 #過濾大于3的元素 #1.利用循環(huán) def filterList1(*lst): b=[] for i in lst: if i>3: b.append(i) return b f1=filterList1(1,2,3,4,5,6) print(f1) #2.利用列表內(nèi)計算 def filterList2(*lst): b=[i for i in lst if i >3]#列表解析 return b f2=filterList2(1,2,3,4,5,6) print(f2) #3.利用filter def filterList3(*lst): b=filter(lambda x:x>3,lst) return b f3=filterList3(1,2,3,4,5,6) print(list(f3))#注意此句。
輸出是:
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實現(xiàn)圖像尺寸和格式轉(zhuǎn)換處理的示例詳解
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)圖像尺寸獲取和格式轉(zhuǎn)換處理的功能,文中的示例代碼講解詳細,感興趣的可以了解一下2023-04-04Python如何爬取微信公眾號文章和評論(基于 Fiddler 抓包分析)
這篇文章主要介紹了Python如何爬取微信公眾號文章和評論(基于 Fiddler 抓包分析),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-06-06詳解Python對某地區(qū)二手房房價數(shù)據(jù)分析
這篇文章主要為大家介紹了Python數(shù)據(jù)分析某地區(qū)二手房房價,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12Python網(wǎng)絡(luò)爬蟲項目:內(nèi)容提取器的定義
本篇文章主要介紹了Python網(wǎng)絡(luò)爬蟲項目,這能有效的節(jié)省程序員的時間,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-10-10使用python實現(xiàn)回文數(shù)的四種方法小結(jié)
今天小編就為大家分享一篇使用python實現(xiàn)回文數(shù)的四種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11vim自動補全插件YouCompleteMe(YCM)安裝過程解析
這篇文章主要介紹了vim自動補全插件YouCompleteMe(YCM)安裝過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-10Python?OpenCV實現(xiàn)圖片預(yù)處理的方法詳解
這篇文章主要為大家詳細介紹了Python?OpenCV實現(xiàn)圖片預(yù)處理的方法,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的可以了解一下2022-09-09