日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:超級代碼搬運工 ? 更新時間: 2023-02-10 編程語言

python list 查找與過濾方法

查找list中是否有某個元素

這個是一個最基礎的操作,使用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)僅僅當你迭代它的時候才會被創建。順便說一下,第一個在py2中等價于

matches = filter(fulfills_some_condition, lst)

返回一個list。在python3中,filter不會返回一個list,而是一個類似于生成器的對象。

查找第一個匹配項

如果您只想要匹配條件的第一個元素(但是您還不知道它是什么),那么使用for循環是可以的(也可以使用else子句,但是都不太推薦)。推薦使用:

next(x for x in lst if ...)

如果沒有找到匹配項,則返回第一個匹配項或引發StopIteration異常?;蛘?,您可以使用

next((x for x in lst if ...), [default value])

查找一個item的位置

查找item位置的基礎功能可以使用python數組的的index方法

[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError

但是,請注意,如果您的數組中有重復值,.index總是返回最前面的索引:……

[1,2,3,2].index(2) # => 1

如果有重復,你想要所有的索引,你可以使用enumerate()代替:

[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]

復雜數據查詢案例

假如有如下類型的數據

list=[{'id': '2', 'position': [3148.18, 4142.69]},{'id': '1', 'position': [3148.19, 142.69]}]

我想根據id來查找,并且獲得指定id的position。

list[next(index for (index, d) in enumerate(list1) if d["id"] == '2')]['position']

python過濾列表的技巧

過濾列表可以用循環、列表解析以及filter等。

下面以列表過濾出大于3的元素。

#列表過濾的幾種方法
#過濾大于3的元素
 
#1.利用循環
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.利用列表內計算
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))#注意此句。

輸出是:

總結

原文鏈接:https://blog.csdn.net/qq997843911/article/details/93855706

欄目分類
最近更新