python 學習筆記(一):在列表、字典、集合中根據條件篩選數據


一、在列表中篩選數據

在列表中篩選出大於等於零的數據,一般通用的用法代碼如下:

1 data = [3, -9, 0, 1, -6, 3, -2, 8, -6] #要篩選的原始數據列表
2 result = [] #存放篩選結果的列表
3 for x in data: #依次迭代循環每個元素
4     if x >= 0: #判斷是否符合篩選條件
5         result.append(x) #大於等於零就將該元素加入結果列表中
6 print(result) #打印輸出

在python 中還有更加簡潔高效的方法:

1、filter函數: 

1 from random import randint 2 #生成一個包含10個隨機數的列表,每個元素的取值范圍在-10到10之間
3 data = [randint(-10, 10) for _ in range(10)] 4 #filter函數的第一個參數是過慮函數,通常使用lambda匿名函數,第二個參數是要過濾的列表
5 result = filter(lambda x: x >=0, data) 6 print(result)

 2、列表解析:

... result = [x for x in data if x >= 0] ...

 

 二、在字典中篩選數據

在字典中根據值來篩選數據,下面的例題是篩選出分數大於等於90分同學的代碼:

 

1 from random import randint 2 #同學姓名列表,用字母簡化代表同學姓名
3 students = ['x', 'y', 'z', 'a', 'b', 'c', 'g', 'k', 'j'] 4 #迭代循環姓名列表,隨機生成每個同學的分數
5 data = {s: randint(60, 100) for s in students} 6 #根據分數來篩選過濾字典中的每個元素
7 result = {k:v for k, v in data.items() if v >= 90} 8 print(result)

 

 三、在集合中篩選數據

在集合中篩選數據的操作和字典非常相似,只是略去鍵值之間的冒號。下面是在集合中篩選出能整除3的元素的代碼:

1 from random import randint 2 #生成包含20個隨機數的列表,元素的取值范圍為1到100之間
3 data = [randint(1, 100) for _ in range(20)] 4 #將列表轉換為集合,去除重復元素
5 my_set = set(data) 6 #篩選出能整除3的元素
7 result = [x for x in my_set if x%3 == 0] 8 print(result)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM