python中的list 查找與過濾方法整合
python list 查找與過濾方法
查找list中是否有某個(gè)元素
這個(gè)是一個(gè)最基礎(chǔ)的操作,使用in操作符,如下所示:
3 in [1, 2, 3] # => True
過濾一個(gè)集合
過濾出滿足一定條件的所有元素,可以使用列表表達(dá)式或者生成器表達(dá)式:
matches = [x for x in lst if fulfills_some_condition(x)] matches = (x for x in lst if x > 6)
后者返回一個(gè)生成器,你可以將它想象成一個(gè)延后列表(lazy list)僅僅當(dāng)你迭代它的時(shí)候才會(huì)被創(chuàng)建。順便說一下,第一個(gè)在py2中等價(jià)于
matches = filter(fulfills_some_condition, lst)
返回一個(gè)list。在python3中,filter不會(huì)返回一個(gè)list,而是一個(gè)類似于生成器的對象。
查找第一個(gè)匹配項(xiàng)
如果您只想要匹配條件的第一個(gè)元素(但是您還不知道它是什么),那么使用for循環(huán)是可以的(也可以使用else子句,但是都不太推薦)。推薦使用:
next(x for x in lst if ...)
如果沒有找到匹配項(xiàng),則返回第一個(gè)匹配項(xiàng)或引發(fā)StopIteration異常?;蛘?,您可以使用
next((x for x in lst if ...), [default value])
查找一個(gè)item的位置
查找item位置的基礎(chǔ)功能可以使用python數(shù)組的的index方法
[1,2,3].index(2) # => 1 [1,2,3].index(4) # => ValueError
但是,請注意,如果您的數(shù)組中有重復(fù)值,.index總是返回最前面的索引:……
[1,2,3,2].index(2) # => 1
如果有重復(fù),你想要所有的索引,你可以使用enumerate()代替:
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
復(fù)雜數(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)計(jì)算
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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Pytorch中求模型準(zhǔn)確率的兩種方法小結(jié)
這篇文章主要介紹了Pytorch中求模型準(zhǔn)確率的兩種方法小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
python執(zhí)行精確的小數(shù)計(jì)算方法
今天小編就為大家分享一篇python執(zhí)行精確的小數(shù)計(jì)算方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python中使用第三方庫xlutils來追加寫入Excel文件示例
這篇文章主要介紹了Python中使用第三方庫xlutils來追加寫入Excel文件示例,本文直接給出追加寫入示例和追加效果,需要的朋友可以參考下2015-04-04
django框架實(shí)現(xiàn)模板中獲取request 的各種信息示例
這篇文章主要介紹了django框架實(shí)現(xiàn)模板中獲取request 的各種信息,結(jié)合實(shí)例形式分析了Django框架模板直接獲取request信息的相關(guān)配置與操作技巧,需要的朋友可以參考下2019-07-07

