Skip to main content
 首頁 » 程序教程

Python列表、字典等篩選數據的技巧

2016年08月25日125883

Python的列表、字典或者集合中如何進行數據篩選呢?首先想到的當然是最簡單的,使用循環語句進行篩選。下面的在列表、字典或者集合中進行數據篩選的技巧來源與慕課網的《Python進階強化訓練》中的內容。以下是相關的學習筆記。

實例一、過濾列表中的負數

主要的思路是使用列表生成式的方式去進行列表的篩選?;蛘呤褂胒ilter函數,調用lambda函數篩選。但是列表生成式的效率更高。下面是實例代碼:

#!/usr/local/env python
# coding:utf-8
from random import randint
__author__ = "風輕情淡"
# 生成10個隨機整數的列表
data = [randint(-10, 10) for _ in range(10)]
# filter函數生成的是一個filter對象,需要再迭代取值
ret1 = filter(lambda x: x < 0, data)
print(ret1)
# 列表生成式方式直接獲得列表,速度比filter函數方式要快一些
ret2 = [x for x in data if x < 0]
print(ret2)

實例二、篩選字典值高于90的項目

字典篩選的思路跟列表篩選差不多,使用字典生成式。需要注意的是:Python 3.x 里面,iteritems() 和 viewitems() 這兩個方法都已經廢除了,而 items() 得到的結果是和 2.x 里面 viewitems() 一致的。在3.x 里 用 items()替換iteritems() ,可以用于 for 來循環遍歷。下面是實例代碼:

#!/usr/local/env python
# coding:utf-8
from random import randint

__author__ = "風輕情淡"
# 生成20個成績的字典
data = {x: randint(60, 100) for x in range(1, 21)}
# 使用字典生成式,可以直接篩選數據
ret1 = {k: v for k, v in data.items() if v > 90}
print(ret1)

實例三、篩選能被3整除的元素

集合的處理思路和列表處理的思路基本是一致的,實例代碼如下:

#!/usr/local/env python
# coding:utf-8
from random import randint

__author__ = "風輕情淡"
# 生成10個隨機整數的列表
data = [randint(-10, 10) for _ in range(10)]
# 把列表轉化為集合
s1 = set(data)
# 集合生成式方式直接獲得結果
ret1 = {x for x in s1 if x % 3 == 0}
print(ret1)

以上的數據篩選方式,都是使用的生成式的方式,相對比較簡潔高效。

評論列表3條評論
大家好
大家好回復 不錯不錯贊一個
四川麻將游戲
四川麻將游戲回復 哦,原來是這樣
現貨
現貨回復 厲害厲害
發表評論
中文字幕亚洲欧美|欧美97人人模人人爽|av鲁丝一区鲁丝二区鲁丝三区|巨大黑人极品VIDEOS精品