最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中內(nèi)置函數(shù)filter函數(shù)用法詳解

 更新時間:2024年05月09日 09:57:49   作者:傻啦嘿喲  
filter()函數(shù)是Python內(nèi)置的另一個有用的高階函數(shù),filter()函數(shù)接收一個函數(shù)f和一個序列,函數(shù)f的作用是對每個元素進行判斷,返回True或False,下面這篇文章主要給大家介紹了關(guān)于Python中內(nèi)置函數(shù)filter函數(shù)用法的相關(guān)資料,需要的朋友可以參考下

引言

Python中的filter函數(shù)是一種內(nèi)置的高效過濾器,用于從序列中篩選出符合特定條件的元素,生成一個由符合條件元素組成的新列表。filter函數(shù)在Python中廣泛應用于數(shù)據(jù)清洗和預處理,是Python開發(fā)者必備的技能之一。本文將詳細介紹filter函數(shù)的用法,并通過實例代碼闡述其應用場景。

一、filter函數(shù)基本用法

語法結(jié)構(gòu)filter(function, iterable)

參數(shù)說明

  • function:用于篩選元素的函數(shù),該函數(shù)應返回一個布爾值,表示元素是否符合篩選條件。
  • iterable:待篩選的序列,可以是列表、元組、集合等可迭代對象。

返回值filter函數(shù)返回一個由符合條件的元素組成的新列表。

二、filter函數(shù)應用場景

1、篩選符合條件的元素

filter函數(shù)可以用于從序列中篩選出符合特定條件的元素。例如,從一個列表中篩選出所有偶數(shù):

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]  
even_numbers = filter(lambda x: x % 2 == 0, numbers)  
print(list(even_numbers))  # Output: [2, 4, 6, 8]

在這個例子中,我們傳遞了一個匿名函數(shù)作為filter函數(shù)的第一個參數(shù),該函數(shù)用于判斷一個數(shù)字是否為偶數(shù)。filter函數(shù)將這個函數(shù)應用于序列中的每個元素,篩選出符合條件的偶數(shù)元素。

2、數(shù)據(jù)清洗和預處理

filter函數(shù)在數(shù)據(jù)清洗和預處理方面非常有用。例如,我們可以使用filter函數(shù)來刪除一個列表中的空字符串和None值:

strings = ['hello', '', 'world', None, 'python', 'programming']  
clean_strings = filter(lambda x: x or x.strip(), strings)  
print(list(clean_strings))  # Output: ['hello', 'world', 'python', 'programming']

在這個例子中,我們傳遞了一個匿名函數(shù)作為filter函數(shù)的第一個參數(shù),該函數(shù)用于判斷一個字符串是否為非空字符串或者可以去除空格后的非空字符串。filter函數(shù)將這個函數(shù)應用于序列中的每個元素,篩選出符合條件的非空字符串元素。

3、復雜條件篩選

filter函數(shù)也可以用于復雜條件的篩選。例如,我們可以使用filter函數(shù)來從一個列表中篩選出既是偶數(shù)又是正數(shù)的元素:

numbers = [-1, -2, 3, 4, -5, 6]  
positive_even_numbers = filter(lambda x: x > 0 and x % 2 == 0, numbers)  
print(list(positive_even_numbers))  # Output: [4, 6]

在這個例子中,我們傳遞了一個匿名函數(shù)作為filter函數(shù)的第一個參數(shù),該函數(shù)用于判斷一個數(shù)字是否為正數(shù)且為偶數(shù)。filter函數(shù)將這個函數(shù)應用于序列中的每個元素,篩選出符合條件的正偶數(shù)元素。

4、與其他函數(shù)結(jié)合使用

filter函數(shù)可以與其他Python函數(shù)結(jié)合使用,以實現(xiàn)更復雜的篩選邏輯。例如,我們可以使用filter函數(shù)來篩選出一個列表中符合特定條件的元素,并使用map函數(shù)對篩選出的元素進行進一步處理。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]  
even_numbers = filter(lambda x: x % 2 == 0, numbers)  
squared_even_numbers = map(lambda x: x ** 2, even_numbers)  
print(list(squared_even_numbers))  # Output: [4, 16, 36, 64]

在這個例子中,我們首先使用filter函數(shù)篩選出列表中的偶數(shù)元素,然后使用map函數(shù)將篩選出的元素平方。最后,我們使用list函數(shù)將結(jié)果轉(zhuǎn)換為列表并打印輸出。

三、filter函數(shù)與lambda表達式

在上面的例子中,我們使用了lambda表達式作為filter函數(shù)的第一個參數(shù),用于定義篩選條件。Lambda表達式是一種簡潔的函數(shù)定義方式,可以在需要時定義簡單的匿名函數(shù)。

Lambda表達式的一般語法如下:

lambda arguments: expression

其中,arguments是函數(shù)的參數(shù)列表,expression是函數(shù)的主體部分,即函數(shù)的代碼塊。Lambda表達式可以看作是一種將函數(shù)定義、函數(shù)調(diào)用和返回結(jié)果融為一體的簡潔寫法。

四、filter函數(shù)與列表推導式

列表推導式是Python中一種高效的數(shù)據(jù)處理方法,可以用于將列表中的元素按照一定條件進行篩選和轉(zhuǎn)換。列表推導式的語法如下:

[expression for item in iterable if condition]

其中,expression是表達式,用于對每個元素進行轉(zhuǎn)換或處理;item是迭代器中的每個元素;iterable是待處理的序列;condition是篩選條件,用于判斷元素是否符合要求。

列表推導式與filter函數(shù)的結(jié)合使用可以實現(xiàn)更為復雜的數(shù)據(jù)處理需求。例如,下面的代碼將篩選出列表中的偶數(shù)元素,并將它們平方:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]  
even_numbers = [x ** 2 for x in numbers if x % 2 == 0]  
print(even_numbers)  # Output: [4, 16, 36, 64]

在這個例子中,我們使用了列表推導式來篩選出列表中的偶數(shù)元素,并將它們平方。最終結(jié)果是一個包含所有篩選出的偶數(shù)元素的平方的新列表。

五、總結(jié)

filter函數(shù)是Python中一個非常實用的內(nèi)置函數(shù),可以用于從序列中篩選出符合特定條件的元素,生成一個由符合條件元素組成的新列表。通過掌握filter函數(shù)的用法,我們可以更方便地進行數(shù)據(jù)清洗和預處理,實現(xiàn)更為復雜的數(shù)據(jù)處理需求。同時,掌握lambda表達式和列表推導式的用法也可以幫助我們更高效地使用filter函數(shù)。

補充:Python中使用filter過濾列表的一個小技巧

有的時候使用dir(Module),可以查看里面的方法,但是模塊自帶的屬性"__"開頭的也會顯示,如下:

>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_Buil
tinMethodType', '_MethodType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_acos', '_c
eil', '_cos', '_e', '_exp', '_hashlib', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_test', '_test_
generator', '_urandom', '_warn', 'betavariate', 'choice', 'division', 'expovariate', 'gammavariate', 'gauss', 'getrandbi
ts', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sam
ple', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>>

這個時候想過濾以"_"或"__"開頭的方法,可以:

>>> filter(lambda s: not s.startswith("_"), dir(random))
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', 'betav
ariate', 'choice', 'division', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormv
ariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 't
riangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>>

從上面來看,使用filter()函數(shù),結(jié)合lambda函數(shù)很好的完成了任務。 其他的例子,比如想從一個列表中過濾非數(shù)字的字符串列表:

>>> L = ["1234", "ABCD", "BOOK"]
>>> filter(lambda s: s.isdigit(), L)
['1234']
>>>

到此這篇關(guān)于Python中內(nèi)置函數(shù)filter函數(shù)用法的文章就介紹到這了,更多相關(guān)Python filter函數(shù)用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

东乌| 叶城县| 柳州市| 大冶市| 思南县| 板桥市| 新泰市| 长寿区| 舟曲县| 娱乐| 和政县| 天全县| 霍山县| 乾安县| 且末县| 千阳县| 辉县市| 东阳市| 宝鸡市| 东乡县| 呼和浩特市| 仪陇县| 方城县| 齐河县| 漳浦县| 水富县| 灵寿县| 景德镇市| 天长市| 纳雍县| 略阳县| 晋中市| 南乐县| 宁化县| 武功县| 新乐市| 无为县| 湛江市| 五指山市| 乌恰县| 长治县|