Python實用技巧之列表、字典、集合中根據(jù)條件篩選數(shù)據(jù)詳解
通用做法:迭代
以列表為例:
篩選出下列數(shù)字大于等于0的數(shù)
data = [2, 7, -4, -1, 3, 0, 8] res = [] for i in data: if i >= 0: res.append(i) print(res)
運(yùn)行結(jié)果:
[2, 7, 3, 0, 8]
巧技——列表篩選
使用filter函數(shù)
隨機(jī)生成一組正負(fù)數(shù)皆有的數(shù),篩選出大于等于0的數(shù)
flilter(function or None, iterable)
from random import randint data = [randint(-10,10) for _ in range(10)] # filter 接收兩個參數(shù),第一個參數(shù)為過濾條件,第二個參數(shù)為過濾范圍 f = filter(lambda x: x>=0, data) for j in f: print(j)
使用列表解析(列表推導(dǎo)式)
隨機(jī)生成一組正負(fù)數(shù)皆有的數(shù),篩選出大于等于0的數(shù)
from random import randint data = [randint(-10,10) for _ in range(10)] f = [i for i in data if i >= 0] print(f)
使用timeit測試兩種方法的運(yùn)行速度得到:使用列表解析的速度更快,但二者皆比通用做法迭代要快
巧技——字典篩選
假設(shè)有20個學(xué)生,學(xué)生分?jǐn)?shù)在60-100之間,篩選出成績在90分以上的學(xué)生
import random dict = {i: random.randint(60, 100) for i in range(1, 21)} # print(dict) # 根據(jù)值過濾除分?jǐn)?shù)高于90的人 res = {k: v for k, v in dict.items() if v > 90} print(res)
巧技——集合篩選
10個隨機(jī)的正負(fù)數(shù),篩選出可以和2整除的數(shù)字
import random data = set(random.randint(-10,10) for _ in range(10)) # print(data) # 篩選集合中能被2整除的數(shù) res = {i for i in data if i % 2 ==0} print(res)
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Python的hashlib庫獲取超大文件的md5值實例探究
這篇文章主要為大家介紹了Python的hashlib庫獲取超大文件的md5值實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python kmeans聚類簡單介紹和實現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了python kmeans聚類簡單介紹和實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02Python實戰(zhàn)之生成有關(guān)聯(lián)單選問卷
這篇文章主要為大家分享了一個Python實戰(zhàn)小案例——生成有關(guān)聯(lián)單選問卷,并且能根據(jù)問卷總分?jǐn)?shù)生成對應(yīng)判斷文案結(jié)果,感興趣的可以了解一下2023-04-04對python 數(shù)據(jù)處理中的LabelEncoder 和 OneHotEncoder詳解
今天小編就為大家分享一篇對python 數(shù)據(jù)處理中的LabelEncoder 和 OneHotEncoder詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07python3.7.2 tkinter entry框限定輸入數(shù)字的操作
這篇文章主要介紹了python3.7.2 tkinter entry框限定輸入數(shù)字的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05