網站首頁 編程語言 正文
本文用python的實例來介紹如何在python中按不同的條件在列表list、字典dict和集合set中篩選想要的數據
一、過濾列表中的負數
案例: 過濾列表[3, 5, -19, -3, 48, 22, -19, -33, 42, -4, -18]
中的負數。
1. 方案一:使用for循環實現列表過濾
最簡單的實現方法:使用for循環實現,代碼如下所示。
list_data = [3, 5, -19, -3, 48, 22, -19, -33, 42, -4, -18]
# (1) 創建空列表用于存儲過濾結果:
list_data_filter_result = []
# (2) 下面使用for循環實現過濾列表中的負數:
for x in list_data:
if x >= 0:
list_data_filter_result.append(x)
# (3) 輸出結果:
print(list_data_filter_result)
結果:
上面的for循環方案是一個簡單的列表篩選方案,其實Python中還有以下兩種更高級的列表篩選方案:
- (1)列表解析:[x for x in list_data if x >= 0];
- (2)使用filter函數配合lambda匿名函數:filter(lambda x: x >= 0, list_data)
2. 方案二:使用列表解析進行列表過濾
Python代碼如下所示:
from random import randint
# (1) 使用randint生成包含十個數字的隨機列表:
List_1 = [randint(-10, 10) for _ in range(10)]
# (2 )下面使用列表解析方法實現篩選類表中的正數:
List_Filter_1 = [x for x in List_1 if x >= 0]
# (3) 輸出結果:
print('原始列表:', List_1)
print('過濾負數后的列表:', List_Filter_1)
結果:
3. 方案三:使用filter函數進行列表過濾
filter
函數通過匿名函數lambda
對列表進行篩選,并返回一個filter生成器對象(filter object)。獲取filter生成器對象的方法通常有兩種:
- 1、通過next函數依次讀取,當讀取完列表內容后,會拋出一個
StopIteration
異常; - 2、使用list列表構造器讀取filter生成器對象中的內容(本文使用的方法)。
Python代碼如下所示:
from random import randint
List_1 = [randint(-10, 10) for _ in range(10)]
# (1) 使用filter函數配合lambda匿名函數,對列表進行篩選
# 并返回一個filter生成器對象(filter object)。
filter_object = filter(lambda x: x >= 0, List_1)
# (2) 使用list列表構造器讀取生成器對象中的內容:
List_Filter_1 = list(filter_object)
# (3) 輸出結果:
print('原始列表:', List_1)
print('過濾負數后的列表:', List_Filter_1)
二、篩選出字典中值大于某個值的項
案例: 篩選出字典中值velue滿足某些條件的項。比如:{‘xiaoliang’:87, ‘xiaowang’:99, ‘xiaoxin’:95, ‘xiaoli’:67, ‘xiaoran’:79, ‘xiaoxuan’:88}值高于90的項。
1. 方案一:使用字典解析進行字典篩選
這里需要注意兩個方面:
- 1、創建一個包含學生名、成績字典的方式;
- 2、字典解析篩選方法。
Python代碼如下所示:
from random import randint
# (1) 創建一個包含20個學生名及成績的字典創建方法
student_dict = {'student_%d' % i: randint(50, 100)
for i in range(1, 21)}
# (2) 下面使用字典解析方法,篩選出字典中選取成績在90分以上的學生:
student_dict_filter = {stu_key:stu_val for stu_key, stu_val
in student_dict.items() if stu_val >= 90}
# (3) 輸出結果:
print('原始字典:', student_dict)
print('篩選后的字典:', student_dict_filter)
結果:
2. 方案二:使用filter函數進行字典篩選
filter
函數進行字典過濾方法具體步驟:
- 1、在filter函數中使用匿名函數lambda對字典進行過濾;
- 2、注意lambda的參數x接收的是字典項student.items(),并以元組形式存儲。另外,我們需要判斷的是字典的value,即通過x[1]> = 90實現成績篩選;
- 3、由于filter函數返回的是一個filter生成器對象(filter_object),所以需要使用字典構造器dict讀取其中內容,才能正常輸出字典結果。
Python代碼如下所示:
from random import randint
# 1、下面是創建一個包含學生及成績字典的高級方式:
student_dict = {'student_%d' % i: randint(50, 100)
for i in range(1, 21)}
# 2、filter函數進行字典過濾方法具體步驟
# (1)下面使用filter函數來進行字典解析,在filter內部
# 使用匿名函數lambda進行字典過濾。
# (2) 注意:x返回的是字典student.items()的一個包含
# 字典key和value的元組,我們需要判斷的只是字典的value。
# (3) 還要注意:需要使用字典構造器dict將filter生成器中
# 的內容取出,才能正常輸出字典結果。
student_dict_filter = dict(filter(lambda x: x[1] >= 90,
student_dict.items()))
# 3、輸出結果
print('原始字典:' ,student_dict)
print('篩選后的字典:' ,student_dict_filter)
結果:
三、篩選出集合中符合某個條件的元素
案例:篩選出集合中能被3整除的元素,這里使用最常用的集合解析方法實現。
Python代碼如下所示:
from random import randint
# (1)下面創建一個20個50以內的數字集合:
number_set = {randint(0, 50) for _ in range(20)}
# (2)下面使用集合解析方法篩選出集合中能夠被3整除的元素:
number_set_filter = {x for x in number_set if x % 3 == 0}
# (3)輸出結果:
print('原始集合:', number_set)
print('過濾后的的集合:', number_set_filter)
結果:
原文鏈接:https://blog.csdn.net/weixin_39589455/article/details/128098270
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-10-18 Qt?TCP實現簡單通信功能_C 語言
- 2022-08-05 Android自定義Span實現文字漸變效果_Android
- 2022-12-24 C++返回值是類名和返回值是引用的區別及說明_C 語言
- 2022-07-26 Python標準庫之日期、時間和日歷模塊_python
- 2022-07-17 Docker?Push?Skipped?foreign?layer?的錯誤問題及解決方案_docke
- 2022-12-03 FFmpeg?Principle分析Out?put?File?數據結構_Android
- 2022-10-25 一文搞懂Golang中iota的用法和原理_Golang
- 2023-06-05 Python利用GDAL模塊實現讀取柵格數據并對指定數據加以篩選掩膜_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支