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

淺談python之高階函數(shù)和匿名函數(shù)

 更新時間:2019年03月21日 15:05:21   作者:strive_cogit  
這篇文章主要介紹了python之高階函數(shù)和匿名函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

map()

map()函數(shù)接收兩個參數(shù),一個是函數(shù),一個是Iterable,map將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的Iterator返回。

def func(x):
 return x*x

r = map(func, [1, 2, 3, 4, 5])
print(type(r))
r = list(r)
print(r)

輸出結(jié)果:

<class 'map'>
[1, 4, 9, 16, 25]

可以看出,map讓函數(shù)func作用于列表的每一項,使列表的每一項都被函數(shù)func執(zhí)行一次,即列表的每一項都進行平方。其返回值是map類型。

reduce()

reduce函數(shù)必須接收兩個參數(shù),把一個函數(shù)作用在一個序列[x1, x2, x3, ...]上,然后再把結(jié)果繼續(xù)和序列的下一個元素做累積計算。

from functools import reduce

def fn(x, y):
 return x * 10 + y

f = reduce(fn, [1, 3, 5, 7, 9]) # 把序列變?yōu)檎麛?shù)
print(f)
print(type(f))

輸出結(jié)果:

13579
<class 'int'>

和map不同,雖然reduce也是作用于每個元素,但是reduce的作用結(jié)果要用在下次和另一個元素做累積計算。

map()和reduce()的結(jié)合使用

from functools import reduce

def fn(x, y):
 return x * 10 + y

def char2num(s):
 digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
 return digits[s]

f = reduce(fn, map(char2num, '13579'))
print(f)

輸出結(jié)果:

13579

可以將字符串類型轉(zhuǎn)換為int類型

filter()

filter()函數(shù)用于過濾序列,接收一個函數(shù)和一個序列。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。

def not_empty(s):
  return s and s.strip()  # 不能直接寫s.strip()
 
 f = filter(not_empty, ['A', '', 'B', None, 'C', ' '])
 print(type(f))
 print(list(f))

輸出結(jié)果:

<class 'filter'>
['A', 'B', 'C']

sorted()

sorted()函數(shù)也是一個高階函數(shù),在列表的學(xué)習(xí)中初步接觸了sorted(),但其實它還可以接收一個key函數(shù)來實現(xiàn)自定義的排序。

key指定的函數(shù)將作用于被排序?qū)ο蟮拿恳粋€元素上,并根據(jù)key函數(shù)返回的結(jié)果進行排序。

l = sorted([36, 5, -12, 9, -21], key=abs) # 按絕對值大小排序
print(l)

s = sorted(['bob', 'about', 'Zoo', 'Credit'])  # 按ASCII大小排序
print(s)

sl = sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower) # 忽略大小寫排序
print(sl)

sr = sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)  # 反向排序
print(sr)

輸出結(jié)果:

[5, 9, -12, -21, 36]
['Credit', 'Zoo', 'about', 'bob']
['about', 'bob', 'Credit', 'Zoo']
['Zoo', 'Credit', 'bob', 'about']

同樣的,sorted()也可以對元組和字典進行排序

from operator import itemgetter    # 需要使用operator模塊
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
print(sorted(L, key=itemgetter(0)))

輸出結(jié)果:

[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]

 當(dāng)然,也能以values的值來排序,對字典的排序與元組類似,但返回值不同。

from operator import itemgetter

dic = {"Bob": 75, "Adam": 92, "Lisa": 88}

print(sorted(dic,key=itemgetter(0)))

print(sorted(dic, key=itemgetter(1)))

 輸出結(jié)果:

['Adam', 'Bob', 'Lisa']
['Adam', 'Lisa', 'Bob']

可以看到,不管是以key值進行排序,還是以value值進行排序,排序結(jié)果只返回對應(yīng)順序的key值。

匿名函數(shù)

f = list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
print(f)

輸出結(jié)果:

[1, 4, 9, 16, 25, 36, 49, 64, 81]

上面就是一個匿名函數(shù)的使用,匿名函數(shù) lambda x: x * x 實際上就是:

 def f(x):
 return x * x

只是在這里沒有顯式地定義函數(shù),這樣因為函數(shù)沒有名字,不必?fù)?dān)心函數(shù)名沖突,而且代碼看起來也簡潔。

以上所述是小編給大家介紹的python之高階函數(shù)和匿名函數(shù)詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Python Pygame實戰(zhàn)之憤怒的小鳥游戲?qū)崿F(xiàn)

    Python Pygame實戰(zhàn)之憤怒的小鳥游戲?qū)崿F(xiàn)

    《憤怒的小鳥》其實活得還不錯,盡管我們一直在嘲笑它的IP帝國夢做得太大。但要知道,把休閑益智游戲的生意做到這個份上的,恐怕也就獨此一家了。本文將利用Pygame實現(xiàn)這一游戲,需要的可以參考一下
    2022-04-04
  • 使用matplotlib畫圖自定義marker

    使用matplotlib畫圖自定義marker

    這篇文章主要介紹了使用matplotlib畫圖自定義marker問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python+OpenCV編寫車輛計數(shù)器系統(tǒng)

    Python+OpenCV編寫車輛計數(shù)器系統(tǒng)

    本文,我們將使用歐幾里德距離跟蹤和輪廓的概念在 Python 中使用 OpenCV 構(gòu)建車輛計數(shù)器系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-05-05
  • Python使用Oracle向量數(shù)據(jù)庫實現(xiàn)文本檢索系統(tǒng)

    Python使用Oracle向量數(shù)據(jù)庫實現(xiàn)文本檢索系統(tǒng)

    在本文中,我們將深入分析一個使用Oracle向量數(shù)據(jù)庫實現(xiàn)文本檢索系統(tǒng)的Python代碼,并基于相同的技術(shù)生成一個新的示例,這個系統(tǒng)允許我們存儲文檔及其嵌入向量,并執(zhí)行相似性搜索,感興趣的朋友可以參考下
    2024-07-07
  • python3?字符串str和bytes相互轉(zhuǎn)換

    python3?字符串str和bytes相互轉(zhuǎn)換

    這篇文章主要介紹了python3?字符串str和bytes相互轉(zhuǎn)換,在文件傳輸過程中,通常使用bytes格式的數(shù)據(jù)流,而代碼中通常用str類型,因此str和bytes的相互轉(zhuǎn)換就尤為重要,下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-03-03
  • Python使用re模塊實現(xiàn)okenizer(表達式分詞器)

    Python使用re模塊實現(xiàn)okenizer(表達式分詞器)

    這篇文章主要介紹了Python使用re模塊實現(xiàn)okenizer,我們這里講解用正則表達式構(gòu)建簡單的表達式分詞器(tokenizer),它能夠?qū)⒈磉_式字符串從左到右解析為標(biāo)記(tokens)流,需要的朋友可以參考下
    2022-04-04
  • 在Mac下使用python實現(xiàn)簡單的目錄樹展示方法

    在Mac下使用python實現(xiàn)簡單的目錄樹展示方法

    今天小編就為大家分享一篇在Mac下使用python實現(xiàn)簡單的目錄樹展示方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python多進程同步Lock、Semaphore、Event實例

    Python多進程同步Lock、Semaphore、Event實例

    這篇文章主要介紹了Python多進程同步Lock、Semaphore、Event實例,Lock用來避免訪問沖突、Semaphore用來控制對共享資源的訪問數(shù)量、Event用來實現(xiàn)進程間同步通信,需要的朋友可以參考下
    2014-11-11
  • Python 按比例獲取樣本數(shù)據(jù)或執(zhí)行任務(wù)的實現(xiàn)代碼

    Python 按比例獲取樣本數(shù)據(jù)或執(zhí)行任務(wù)的實現(xiàn)代碼

    這篇文章主要介紹了Python 按比例獲取樣本數(shù)據(jù)或執(zhí)行任務(wù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 關(guān)于python導(dǎo)入模塊import與常見的模塊詳解

    關(guān)于python導(dǎo)入模塊import與常見的模塊詳解

    今天小編就為大家分享一篇關(guān)于python導(dǎo)入模塊import與常見的模塊詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論

航空| 清新县| 礼泉县| 柏乡县| 祁阳县| 望城县| 新安县| 贵溪市| 建德市| 淮南市| 鲁山县| 锡林郭勒盟| 东明县| 宿迁市| 新晃| 贵南县| 兴海县| 龙门县| 博罗县| 灯塔市| 霍城县| 于都县| 金平| 文山县| 梅州市| 隆化县| 湾仔区| 射洪县| 沁阳市| 西和县| 莱州市| 沙田区| 黑龙江省| 陇西县| 辉南县| 古浪县| 竹山县| 贞丰县| 北宁市| 老河口市| 东海县|