真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python的過濾函數(shù) python 過濾函數(shù)

python中的filter函數(shù)怎么用

filter就是按條件篩選:

創(chuàng)新互聯(lián)公司主營潼關(guān)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),潼關(guān)h5微信平臺小程序開發(fā)搭建,潼關(guān)網(wǎng)站營銷推廣歡迎潼關(guān)等地區(qū)企業(yè)咨詢

filter(bool,['spam','','ni'])

list(filter(bool,[''spam,'','ni']))

輸出的結(jié)果為['spam','ni']

#按照bool型篩選,因為中間的‘’,為空,不是bool型所以過濾掉。

Python中的匿名函數(shù)——lambda函數(shù)

在Python中,lambda函數(shù)是一個簡單的匿名函數(shù)。該函數(shù)沒有函數(shù)名,它可以有多個參數(shù),但函數(shù)只由一個表達式構(gòu)成。

lambda函數(shù)具體的格式如下:

lambda 參數(shù) : 表達式

其中, lambda 是關(guān)鍵字, 參數(shù) 是函數(shù)的參數(shù),可以有0至多個。冒號后面是表達式,也是該函數(shù)中的唯一的表達式,lambda函數(shù)會返回該表達式的返回值。

我們來看一個具體的例子。

在上述代碼中,number1, number2是lambda函數(shù)的參數(shù),number1**2+number**2是函數(shù)的表達式,該函數(shù)返回number1, number2兩個數(shù)的平方和。

上述代碼創(chuàng)建了一個lambda函數(shù)后將其賦值給變量sum_square, 在print函數(shù)中通過sum_square來調(diào)用這個lambda函數(shù)。

上述的lambda函數(shù)完全可用標(biāo)準(zhǔn)的函數(shù)來實現(xiàn),我們可以將上述代碼改寫成下面的代碼。

在代碼中,定義了函數(shù)sum_square,該函數(shù)包含兩個參數(shù),并執(zhí)行一條語句并將該語句的執(zhí)行結(jié)果作為函數(shù)返回值。通過上述代碼可以幫助我們更直觀地理解lambda函數(shù)。

lambda函數(shù)的可讀性較差,那么為什么要有這樣奇怪的匿名函數(shù)呢?這個要從lambda的使用場合說起。我們來看下面的代碼。

上述代碼定義了一個數(shù)值列表,調(diào)用python的內(nèi)置函數(shù)filter來生成一個新的迭代器。 filter函數(shù)的第一個參數(shù)為一個函數(shù),用于決定過濾的方法;第二個參數(shù)為一個可迭代的對象如列表、集合等。filter函數(shù)返回一個新的迭代器, 用于獲得滿足第一個函數(shù)為真的所有元素。在上述代碼中,我們給filter傳遞的第一個參數(shù)是一個匿名函數(shù):lambda number:number%3==0, 該函數(shù)在一個數(shù)整除3時為True,否則為False. filter函數(shù)會創(chuàng)建一個新的迭代器,通過調(diào)用上述匿名函數(shù)來判斷該元素是否滿足條件,得到所有3的倍數(shù)的數(shù)。

當(dāng)然,上述代碼也可以使用正常的函數(shù)方式來實現(xiàn),如下所示:

我們可以看到,所有匿名函數(shù)的功能都可以通過標(biāo)準(zhǔn)函數(shù)來實現(xiàn)。匿名函數(shù)常在調(diào)用其它函數(shù)(如filter, map等)時作為參數(shù)使用。使用匿名函數(shù)可以使代碼更為精簡。匿名函數(shù)主要用于完成簡單的任務(wù),如果匿名函數(shù)過于復(fù)雜,會導(dǎo)致可讀性較差,調(diào)試起來也比較困難,因此,強烈不建議使用lambda寫天書般的代碼??傊?,要根據(jù)實際情況決定是否使用匿名函數(shù)。

Python中的eval()、filter()、float()函數(shù)有什么用?

Python解釋器內(nèi)置了許多函數(shù),這意味著我們無需定義,始終可以它們。下面按照函數(shù)的字母順序,討論一些常用的內(nèi)建函數(shù)。

eval()

eval()函數(shù)解析傳給它的表達式,并在程序中運行Python表達式(代碼)。舉個例子:

x?=?1

eval("x?+?1")??#?注意:"x?+?1"是字符串

2

eval("4??9")

True

eval("'py'?*?3")

'pypypy'

eval("10?**?2")

100

eval()函數(shù)不僅僅能運行簡單表達式,還能調(diào)用函數(shù),使用方法等等:

eval("abs(-11)")????????#?計算-11的絕對值

11

eval('"hello".upper()')???#?把字符串'hello'全變成大寫字母

'HELLO'

import?os

eval('os.getcwd()')???????#?獲取當(dāng)前的工作目錄

'/home/thepythonguru'

但是需要注意的是eval()僅適用于表達式,嘗試傳遞語句會導(dǎo)致語法錯誤:

eval('a?=?1')????????????????????#?賦值語句

Traceback?(most?recent?call?last):

File?"",?line?1,?in

File?"",?line?1

a?=?1

^

SyntaxError:?invalid?syntax

eval('import?re')?????????????#?導(dǎo)入語句

Traceback?(most?recent?call?last):

File?"",?line?1,?in

File?"",?line?1

import?re

^

SyntaxError:?invalid?syntax

此外,使用eval()語句應(yīng)該十分小心,永遠(yuǎn)不要將不受信任的源直接傳遞給eval()。 因為惡意用戶很容易對您的系統(tǒng)造成破壞。 例如:

eval(input())??#?eval()將執(zhí)行用戶輸入的代碼

用戶輸入以下代碼就能從系統(tǒng)中刪除所有文件:

os.system("RM?-RF?/")

#?上面輸入相當(dāng)于執(zhí)行:

eval('os.system("RM?-RF?/")')

filter()

"filter"的意思是“過濾”,filter()函數(shù)需要兩個參數(shù):一個函數(shù)對象和一個可迭代對象。函數(shù)對象需要返回一個布爾值,并為可迭代的每個元素調(diào)用。 filter()函數(shù)僅返回那些通過函數(shù)對象返回值為true的元素。解釋有一些抽象,看一個例子:

a?=?[1,?2,?3,?4,?5,?6]

filter(lambda?x?:?x?%?2?==?0,?a)????????#?過濾出所有偶數(shù),結(jié)果返回一個filter對象

filter?object?at?0x1036dc048

list(filter(lambda?x?:?x?%?2?==?0,?a))??#?可以使用list()函數(shù)使fileter對象變成列表,方便查看結(jié)果

[2,?4,?6]

下面是另外一個例子:

dict_a?=?[{'name':?'python',?'points':?10},?{'name':?'java',?'points':?8}]

filter(lambda?x?:?x['name']?==?'python',?dict_a)??#?過濾出列表中鍵'name'為值'python'的字典

filter?object?at?0x1036de128

tuple(filter(lambda?x?:?x['name']?==?'python',?dict_a))??#?使用tuple()函數(shù)使結(jié)果變成字典

({'name':?'python',?'points':?10},)

float()

float()的參數(shù)是一個數(shù)字或者字符串,它返回一個浮點數(shù)。如果參數(shù)是字符串,則字符串中應(yīng)該包含一個數(shù)字,并可以在數(shù)字前加入一個 '-' 符號,代表負(fù)數(shù)。參數(shù)也可以是表示NaN(非數(shù)字)或正無窮大的字符串。如果沒有任何參數(shù)的話,將返回0.0。

float('+1.23')?????????#?1.23

1.23

float('???-12345\n')???#?-12345

-12345.0

float('1e-003')????????#?0.001

0.001

float('+1E6')??????????#?10的6次冪

1000000.0

float('-Infinity')?????#?無窮小

-inf

float('-inf')?+?100?????#?負(fù)無窮小加100仍等于負(fù)無窮小

-inf

float('inf')???????????#?無窮大

inf

float('NaN')???????????#?NaN,代表非數(shù)字

nan

關(guān)于Python的基礎(chǔ)問題可以看下這個網(wǎng)頁的視頻教程,網(wǎng)頁鏈接,希望我的回答能幫到你。


網(wǎng)站欄目:python的過濾函數(shù) python 過濾函數(shù)
分享URL:http://weahome.cn/article/hjioch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部