0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python高階函數(shù)詳解

python爬蟲(chóng)知識(shí)分享 ? 來(lái)源:python爬蟲(chóng)知識(shí)分享 ? 作者:python爬蟲(chóng)知識(shí)分享 ? 2022-03-02 16:47 ? 次閱讀

python高階函數(shù)

1. map 函數(shù)

map 函數(shù),它接收兩個(gè)參數(shù),第一個(gè)參數(shù)是一個(gè)函數(shù)對(duì)象(當(dāng)然也可以是一個(gè)lambda表達(dá)式),第二個(gè)參數(shù)是一個(gè)序列。

它可以實(shí)現(xiàn)怎樣的功能呢,我舉個(gè)例子你就明白了。

>>> map(lambda x: x*2, [1,2,3,4,5])
[2, 4, 6, 8, 10]

可以很清楚地看到,它可以將后面序列中的每一個(gè)元素做為參數(shù)傳入lambda中。

當(dāng)我們不使用 map 函數(shù)時(shí),你也許會(huì)這樣子寫。

mylist=[]
for i in [1,2,3,4,5]:
    mylist.append(i*2)

2. filter 函數(shù)

filter 函數(shù),和 map 函數(shù)相似。同樣也是接收兩個(gè)參數(shù),一個(gè)lambda 表達(dá)式,一個(gè)序列。它會(huì)遍歷后面序列中每一個(gè)元素,并將其做為參數(shù)傳入lambda表達(dá)式中,當(dāng)表達(dá)式返回 True,則元素會(huì)被保留下來(lái),當(dāng)表達(dá)式返回 False ,則元素會(huì)被丟棄。

下面這個(gè)例子,將過(guò)濾出一個(gè)列表中小于0的元素。

>>>filter(lambda x: x < 0, range(-5, 5))
[-5, -4, -3, -2, -1]

3. reduce 函數(shù)

reduce 函數(shù),也是類似的。它的作用是先對(duì)序列中的第 1、2 個(gè)元素進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用 lambda 函數(shù)運(yùn)算,將其得到的結(jié)果再與第四個(gè)元素進(jìn)行運(yùn)算,以此類推下去直到后面沒(méi)有元素了。

https://file.elecfans.com//web2/M00/33/8C/poYBAGIfLxCAarbfAAB0y7gjBWk239.png

這邊舉個(gè)例子你也就明白了。

>>>reduce(lambda x,y: x+y, [1,2,3,4,5])
15

它的運(yùn)算過(guò)程分解一下是這樣的。

1+2=3
3+3=6
6+4=10
10+5=15

4. 注意點(diǎn)

以上幾個(gè)函數(shù),熟練的掌握它們的寫法,可以讓我們的代碼看起來(lái)更加的 Pythonic ,在某一程度上代碼看起來(lái)更加的簡(jiǎn)潔。

如果你是新手呢,你需要注意的是,以上示例是在 Python2.x 環(huán)境下演示的。而在 Python3.x 中,卻有所不同,你可以自己嘗試一下。

這里總結(jié)一下:

第一點(diǎn),map 和 filter 函數(shù)返回的都不再是一個(gè)列表,而是一個(gè)迭代器對(duì)象。這里以map為例

>>> map_obj = map(lambda x: x*2, [1,2,3,4,5])
>>> from collections.abc import Iterator
>>> isinstance(map_obj, Iterator)
True
>>> next(map_obj)
2
>>> list(map_obj)
[4, 6, 8, 10]

第二點(diǎn),reduce 不可以直接調(diào)用,而是要先導(dǎo)入才能使用

from functools import reduce

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python常用函數(shù)大全

    Python 世界里,有一些寶藏函數(shù)和模塊,它們可以讓你編程更輕松、代碼更高效。這篇文章將帶你一一認(rèn)識(shí)這些神器,讓你的開(kāi)發(fā)生活瞬間輕松不少!
    的頭像 發(fā)表于 10-27 17:20 ?140次閱讀

    output函數(shù)怎么用

    output 函數(shù)是一個(gè)通用的術(shù)語(yǔ),并不特指某個(gè)具體的編程語(yǔ)言或軟件工具。 如果你在使用 Python 編程語(yǔ)言,那么可能是指 print 函數(shù)。Python 中的 print
    的頭像 發(fā)表于 02-23 14:21 ?1120次閱讀

    python中open函數(shù)的用法詳解

    python中open函數(shù)的用法詳解 Python中的open()函數(shù)用于打開(kāi)文件。它接受文件名和模式作為參數(shù),并返回一個(gè)文件對(duì)象。文件對(duì)象
    的頭像 發(fā)表于 01-30 15:31 ?1880次閱讀

    split在python中的用法

    split在python中的用法 split()是Python中一個(gè)非常常用的字符串函數(shù),它能夠根據(jù)指定的分隔符將一個(gè)字符串分割成多個(gè)子字符串,并返回一個(gè)包含這些子字符串的列表。本文將詳細(xì)介紹
    的頭像 發(fā)表于 12-25 15:12 ?1944次閱讀

    python中計(jì)算排列組合的函數(shù)有哪些

    Python中,有多種可以用于計(jì)算排列組合的函數(shù)和模塊。下面將詳細(xì)介紹一些常用的函數(shù)和模塊,并提供詳實(shí)和細(xì)致的說(shuō)明。 math模塊: Python的math模塊提供了一些計(jì)算排列組合
    的頭像 發(fā)表于 11-29 16:33 ?3416次閱讀

    不屬于python的內(nèi)置函數(shù)

    Python是一種高級(jí)編程語(yǔ)言,它提供了許多內(nèi)置函數(shù),可以幫助開(kāi)發(fā)人員更輕松地處理各種任務(wù)。但是,在Python中并非所有的函數(shù)都是內(nèi)置函數(shù)
    的頭像 發(fā)表于 11-29 14:27 ?1342次閱讀

    python中各種函數(shù)的用法

    Python中有很多種不同類型的函數(shù),它們?cè)诮鉀Q各種問(wèn)題和完成不同任務(wù)時(shí)起著重要的作用。下面我將詳細(xì)介紹幾種常用的函數(shù),包括內(nèi)置函數(shù)、自定義函數(shù)
    的頭像 發(fā)表于 11-23 15:48 ?695次閱讀

    python調(diào)用math函數(shù)的方法

    Python編程中,數(shù)學(xué)函數(shù)是非常重要的工具,我們可以使用它們進(jìn)行各種數(shù)值計(jì)算、幾何運(yùn)算和統(tǒng)計(jì)分析等操作。Python的標(biāo)準(zhǔn)庫(kù)中內(nèi)置了很多數(shù)學(xué)函數(shù),而其中最基本和常用的數(shù)學(xué)
    的頭像 發(fā)表于 11-22 11:01 ?2675次閱讀

    python的format函數(shù)怎么用

    Python中的format()函數(shù)是用于格式化字符串的內(nèi)置函數(shù)。它允許我們將變量的值插入到字符串中,并對(duì)字符串進(jìn)行格式化以滿足特定的需求。format()函數(shù)使用大括號(hào){}作為占位符
    的頭像 發(fā)表于 11-22 09:44 ?2699次閱讀

    python函數(shù)返回多個(gè)參數(shù)

    函數(shù)是程序設(shè)計(jì)中的一個(gè)重要概念,在很多編程語(yǔ)言中都存在。函數(shù)可以接受輸入數(shù)據(jù),并且根據(jù)輸入數(shù)據(jù)進(jìn)行一系列操作,最后可以返回一個(gè)或多個(gè)結(jié)果。Python是一種非常流行的編程語(yǔ)言,也支持函數(shù)
    的頭像 發(fā)表于 11-21 16:37 ?1145次閱讀

    tuple函數(shù)怎么返回多個(gè)值

    在編程領(lǐng)域中,函數(shù)是非常重要的構(gòu)建模塊,它能夠接受輸入?yún)?shù)并執(zhí)行特定的計(jì)算,最終返回結(jié)果供程序使用。常規(guī)的函數(shù)只能返回一個(gè)值,但有時(shí)我們希望函數(shù)能夠返回多個(gè)值,以便更好地處理問(wèn)題。Python
    的頭像 發(fā)表于 11-21 16:33 ?657次閱讀

    python tuple函數(shù)用法

    Python中的元組是一種不可變的數(shù)據(jù)結(jié)構(gòu),可以存儲(chǔ)多個(gè)不同類型的元素。元組可以通過(guò)一對(duì)小括號(hào)或者tuple()函數(shù)來(lái)創(chuàng)建,并且元素之間用逗號(hào)進(jìn)行分隔。 元組與列表類似,但是元組是不可變的,即元組
    的頭像 發(fā)表于 11-21 16:31 ?724次閱讀

    sort函數(shù)python用法

    sort()函數(shù)Python中的內(nèi)置函數(shù)之一,用于對(duì)可迭代對(duì)象進(jìn)行排序??傻鷮?duì)象包括列表、元組和字符串等。sort()函數(shù)是一個(gè)靈活而強(qiáng)大的函數(shù)
    的頭像 發(fā)表于 11-21 15:15 ?1188次閱讀

    python中insert函數(shù)的用法

    Python中的insert()函數(shù)用于在列表中的指定位置插入元素。它的基本語(yǔ)法如下: list .insert(index, element) 其中,index表示要插入元素的位置,element
    的頭像 發(fā)表于 11-21 14:43 ?2472次閱讀

    python如何定義一個(gè)函數(shù)

    一、Python3 函數(shù) 函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。 函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道
    的頭像 發(fā)表于 11-14 11:26 ?671次閱讀