網站首頁 編程語言 正文
任何事情都是由量變到質變的過程,學習Python也不例外。只有把一個語言中的常用函數了如指掌了,才能在處理問題的過程中得心應手,快速地找到最優方案。
一、filter函數的定義
filter函數是Python中常用的內置函數,調用無需加載庫,直接使用即可。它主要用來根據特定條件過濾迭代器中不符合條件的元素,返回一個惰性計算的filter對象或迭代器。需要用list函數進行轉換,才能得到符合的條件元素組成的新列表。
其基本調用語法如下:
filter(function or None, iterable)
function:函數,作用是對iterable中的每個元素判斷是否符合特定條件。
None:不調用任何函數,只對可迭代對象中的元素本身判斷真假,保留為真的元素。
iterables:可迭代對象(序列、字典等)。
二、filter函數實例
求一個序列中大于零的元素組成的新序列
我們先來看下filter函數不加list的結果,代碼如下:
c = [-10, 28, 9, -5, 30, 5]
filter(lambda a:a>0, c)
得到結果:
<filter at 0x27950dbb9d0>
返回一個惰性計算的filter對象或迭代器。接下來看下用list函數進行轉換會得到什么,代碼如下:
c = [-10, 28, 9, -5, 30, 5]
list(filter(lambda a:a>0, c))
得到結果:
[28, 9, 30, 5]
從結果知,filter函數的作用是挑選出了序列c中大于0的元素組成了新的對象或迭代器。通過list函數進行轉換,進而得到符合條件的元素組成的新列表。如果有朋友對代碼中的lambda函數不熟悉,可以參考【Python常用函數】一文讓你徹底掌握Python中的lambda函數。
求序列中非零數組成的新序列
在filter函數定義中提到,filter函數中參數None表示不調用任何函數,只對可迭代對象中的元素本身判斷真假,保留為真的元素。
測試代碼如下:
#找出序列中的非0數
c2 = [4, 9, 0, -5, -8, 7, 0]
list(filter(None, c2))
得到結果:
[4, 9, -5, -8, 7]
由于0在Python中默認為False,非0默認為True,所以在篩選過程中對0進行了過濾。
求字典中大于2的鍵組成的新序列
在filter函數定義中提到,它對可迭代對象進行處理,所以包括了列表和字典等對象。前兩個例題都是對列表進行處理,本例看下對字典的處理。代碼如下:
#找出字典中大于2的鍵
list(filter(lambda x:x>2, {1:'楊紫', 2:'劉詩雯', 3:'張繼科', 4:'王明', 5:'劉明'}))
得到結果:
[3, 4, 5]
從結果知,filter函數對字典進行處理的時候,篩選的對象是字典的鍵,而不是字典的值。
求100以內既是3的倍數又是奇數的正整數
最后我們來看一個小學常常碰到的題,求100以內既是3的倍數又是奇數的正整數。代碼如下:
#求100以內既是奇數又是3的倍數的正整數
import numpy as np
list(filter(lambda x:x%2!=0 and x%3==0, np.arange(1, 101)))
得到結果:
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]
其中np.arange(1, 101))表示1到100公差為1的等差數列。
x%2!=0表示該數不能整除2,即為奇數。
x%3==0表示該數能整除3,即為3的倍數。
可以人工復核一下,發現Python得到的結果是正確的。
原文鏈接:https://blog.csdn.net/qq_32532663/article/details/125460944
相關推薦
- 2023-07-29 mocano editor中使用代碼比對功能
- 2022-07-13 Docker之Harbor私有倉庫
- 2022-02-09 C語言指針用法總結_C 語言
- 2022-03-21 導出與導入Docker的容器實現示例_docker
- 2022-05-14 jQuery操作CSS樣式_jquery
- 2023-07-26 webpack提供構建速度之打包開啟多進程(thead)
- 2022-07-09 Dockerfile文件介紹
- 2022-12-24 python使用turtle庫寫六角形的思路與代碼_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同步修改后的遠程分支