欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中的list 查找與過濾方法整合

 更新時間:2023年01月04日 09:08:39   作者:超級代碼搬運工  
這篇文章主要介紹了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)文章

最新評論