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 |