標籤:

python高效編程實踐-如何在列表,字典,集合中根據條件篩選數據(1/50)

學習內容:如何在列表,字典,集合中根據條件篩選數據

1.比較常見的方式是定義一個篩選函數,比如:

# 篩選出大於0的元素ndata = [1, 5, -3, -2, 6, 0, 9, 1]nres = []nfor x in data:n if x >= 0:n res.append(x)nnprint(res) # [1, 5, 6, 0, 9, 1]n

運用這種方式,無論是列表、字典還是集合都可以進行特定需求下的篩選工作。但是這種方式代碼較長,並且執行時間非常慢。

2.利用filter函數

# 篩選出大於0的元素ndata = [1, 5, -3, -2, 6, 0, 9, 1]nnew_data = list(filter(lambda x: x >= 0, data)) # filter在py2與py3中不同nprint(new_data) # [1, 5, 6, 0, 9, 1]n

3.利用列表解析、字典解析、集合解析

列表解析

# 篩選出大於0的元素ndata = [1, 5, -3, -2, 6, 0, 9, 1]nnew_l = [x for x in data if x >= 0]nprint(new_l) # [1, 5, 6, 0, 9, 1]n

字典解析

# 篩選出大於90的元素nfrom random import randintnd = {x: randint(60, 100) for x in range(10)} # {0: 97, 1: 94, 2: 86, 3: 62, 4: 77, 5: 62, 6: 73, 7: 72, 8: 71, 9: 99}nnew_d = {k: v for k, v in d.items() if v > 90}nprint(new_d) # {0: 97, 1: 94, 9: 99}n

集合解析

# 篩選出能被3整除的元素ndata = [1, 5, -3, -2, 6, 0, 9, 1]ns = set(data)nnew_s = {x for x in s if x % 3 == 0}nprint(new_s) # {0, 9, -3, 6}n

推薦閱讀:

python與redis的初次碰撞——把玩redis資料庫的一點心得
[18] Python元組
Python編程高級技巧| 選擇好的名稱

TAG:Python |