天天看點

Python奇技淫巧—[1]—在清單、字典、集合中根據條件篩選資料Python奇淫巧技——在清單、字典、集合中根據條件篩選資料

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)
           

歡迎通路

個人部落格位址: www.limiao.tech