簡單探索Python中的filter函式
導讀 | 本文和你一起來探索Python中的filter函式,讓你以最短的時間明白這個函式的原理。也可以利用碎片化的時間鞏固這個函式,讓你在處理工作過程中更高效 |
任何事情都是由量變到質變的過程,學習Python也不例外。只有把一個語言中的常用函式了如指掌了,才能在處理問題的過程中得心應手,快速地找到最優方案。
filter函式是Python中常用的內建函式,呼叫無需載入庫,直接使用即可。它主要用來根據特定條件過濾迭代器中不符合條件的元素,返回一個惰性計算的filter物件或迭代器。需要用list函式進行轉換,才能得到符合的條件元素組成的新列表。
其基本呼叫語法如下:
filter(function or None, iterable)
function:函式,作用是對iterable中的每個元素判斷是否符合特定條件。
None:不呼叫任何函式,只對可迭代物件中的元素本身判斷真假,保留為真的元素。
iterables:可迭代物件(序列、字典等)。
我們先來看下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進行了過濾。
在filter函式定義中提到,它對可迭代物件進行處理,所以包括了列表和字典等物件。前兩個例題都是對列表進行處理,本例看下對字典的處理。程式碼如下:
#找出字典中大於2的鍵 list(filter(lambda x:x>2, {1:'楊紫', 2:'劉詩雯', 3:'張繼科', 4:'王明', 5:'劉明'}))
得到結果:
[3, 4, 5]
從結果知,filter函式對字典進行處理的時候,篩選的物件是字典的鍵,而不是字典的值。
最後我們來看一個小學常常碰到的題,求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得到的結果是正確的。
到此這篇關於Python簡明講解filter函式的用法的文章就介紹到這了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2905258/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python filter函式PythonFilter函式
- python的enumerate lambda isinstance filter函式PythonFilter函式
- 簡單介紹Python中的配對函式zip()Python函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- python函式每日一講 - filter函式過濾序列Python函式Filter
- 『無為則無心』Python函式 — 28、Python函式的簡單應用Python函式
- Python中的高階函式簡介Python函式
- python 內建函式簡單總結Python函式
- 簡單介紹python的input,print,eval函式Python函式
- python之高階函式map,reduce,filter用法Python函式Filter
- 自定義生成器函式模擬Python內建函式filter()函式PythonFilter
- 簡單介紹Python 如何擷取字元函式Python字元函式
- Python簡單函式迴圈綜合例項Python函式
- Python-split()函式用法及簡單實現Python函式
- Python3之遞迴函式簡單示例Python遞迴函式
- python(python中的super函式、)Python函式
- 快取函式的簡單使用快取函式
- php array_filter() 函式的用法PHPFilter函式
- Python hasattr() 函式 // python中hasattr()、getattr()、setattr()函式的使用Python函式
- java呼叫python簡單函式介面的具體教程JavaPython函式
- python中的join()函式Python函式
- python常用函式進階(2)之map,filter,reduce,zipPython函式Filter
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- 『無為則無心』Python函式 — 25、Python中的函式Python函式
- 簡單的檔案快取函式快取函式
- lambda匿名函式sorted排序函式filter過濾函式map對映函式函式排序Filter
- Python中的main函式解析PythonAI函式
- 理解Python中的Lambda函式Python函式
- python中zip()函式的用法Python函式
- MySQL中的ROW_NUMBER視窗函式簡單瞭解下MySql函式
- python函式作用域簡介Python函式
- 簡單介紹SQL中ISNULL函式使用方法SQLNull函式
- js中filter()函式,以及一些去重方法JSFilter函式
- Python中的Map、Reduce和Filter函數語言程式設計PythonFilter函數程式設計
- spark RDD的學習,filter函式的學習,split函式的學習SparkFilter函式
- Python中的split()函式的用法Python函式
- 簡單介紹python函式超時自動退出的實操方法Python函式
- 對高階函式的簡單認識函式