Python奇淫巧技——在清單、字典、集合中根據條件篩選資料
通用做法:疊代
以清單為例:
篩選出下列數字大于等于0的數
data = [2, 7, -4, -1, 3, 0, 8]
res = []
for i in data:
if i >= 0:
res.append(i)
print(res)
運作結果:
[2, 7, 3, 0, 8]
奇淫巧技——清單篩選
- 使用filter函數
随機生成一組正負數皆有的數,篩選出大于等于0的數
flilter(function or None, iterable)
from random import randint
data = [randint(-10,10) for _ in range(10)]
# filter 接收兩個參數,第一個參數為過濾條件,第二個參數為過濾範圍
f = filter(lambda x: x>=0, data)
for j in f:
print(j)
- 使用清單解析(清單推導式)
from random import randint
data = [randint(-10,10) for _ in range(10)]
f = [i for i in data if i >= 0]
print(f)
使用timeit測試兩種方法的運作速度得到:使用清單解析的速度更快,但二者皆比通用做法疊代要快
奇淫巧技——字典篩選
假設有20個學生,學生分數在60-100之間,篩選出成績在90分以上的學生
import random
dict = {i: random.randint(60, 100) for i in range(1, 21)}
# print(dict)
# 根據值過濾除分數高于90的人
res = {k: v for k, v in dict.items() if v > 90}
print(res)
奇淫巧技——集合篩選
10個随機的正負數,篩選出可以和2整除的數字
import random
data = set(random.randint(-10,10) for _ in range(10))
# print(data)
# 篩選集合中能被2整除的數
res = {i for i in data if i % 2 ==0}
print(res)
歡迎通路