python中剃毒,要對(duì)列表病袄、字典搂赋、集合進(jìn)行數(shù)據(jù)篩選,最簡(jiǎn)單的方式就是用遍歷益缠,逐一對(duì)比脑奠,將符合條件的元素保存。這種方式雖然簡(jiǎn)單幅慌,但不夠簡(jiǎn)潔優(yōu)雅宋欺,以下用實(shí)例說明其他實(shí)現(xiàn)方式。
本文示例代碼均用python3實(shí)現(xiàn)
篩選列表數(shù)據(jù)
構(gòu)建一個(gè)數(shù)值范圍在-5至20的10個(gè)元素的列表,并將該列表中大于3的數(shù)據(jù)取出
構(gòu)建列表
from random import randint
data = [randint(-5, 20) for _ in range(10)] # 表示循環(huán)了10次骂租,每次循環(huán)都從-5至20之間取一個(gè)數(shù)值保存到data中
print(data)
用遍歷的方式篩選數(shù)據(jù)
'''迭代'''
for x in data:
if x > 3:
result.append(x)
print(result)
使用filter函數(shù)
'''filter函數(shù)'''
result = list(filter(lambda x: x > 3, data)) # 使用匿名函數(shù)對(duì)列表data進(jìn)行過濾
print(result)
使用列表解析
'''列表解析'''
result = [x for x in data if x > 3]
print(result)
篩選字典元素
假設(shè)一個(gè)班里有30個(gè)學(xué)生祷杈,python的考試成績(jī)?yōu)?至100分之間,要將<60分的同學(xué)篩選出來渗饮。
針對(duì)此需求但汞,需要先構(gòu)建一個(gè)以學(xué)號(hào)為key,分?jǐn)?shù)為value的字典
'''構(gòu)建字典'''
student_score = {x: randint(0, 100) for x in range(1, 31)}
print(student_score)
使用字典解析
result = {k:v for k, v in student_score.items() if v < 60}
print(result)
集合解析
篩選一個(gè)集合中的偶數(shù)
構(gòu)建集合
myset = {randint(5, 20) for _ in range(20)} # set集合中不能包含重復(fù)的數(shù)據(jù),循環(huán)20次有可能獲取到重復(fù)的數(shù)據(jù)互站,因此元素的個(gè)數(shù)可能小于20個(gè)
print(myset)
print(type(myset))
使用集合解析
result = {x for x in myset if x % 2 == 0}
print(result)