黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

python筆記--匿名函數(shù)和函數(shù)式編程

系統(tǒng) 2212 0

一、匿名函數(shù)(lambda):

有些地方需要用到一些簡(jiǎn)單的函數(shù),而且用到的次數(shù)不太多,這個(gè)時(shí)候可以把函數(shù)改寫成匿名函數(shù),不必專門去定義一個(gè)新的函數(shù)。python中,lambda是一個(gè)表達(dá)式,并不是一個(gè)語(yǔ)句,而且lambda的主體是只有一行的簡(jiǎn)單表達(dá)式,并不能擴(kuò)展成一個(gè)多行的代碼塊。

python的一些匿名函數(shù)用法例子:

            
              # 匿名函數(shù)的格式:
lambda argument1, argument2, ... argumentN : expression

# 示例一:
square = lambda x: x**2

square = square(3)


# 示例二:
[(lambda x: x*x)(x) for x in range(10)]


# 示例三:
l = [(1,20), (3, 0), (9, 10), (2, -1)]
l.sort(key=lambda x: x[1])

# 示例四:
squared = map(lambda x: x**2, [1,2,3,4,5])
# map(function, iterable)  對(duì)iterable的每一個(gè)元素進(jìn)行function運(yùn)算。

# 示例五:
d = {'mike': 10, 'lucy': 2, 'ben': 30}
dict(sorted(d.items(), key = lambda x: x[1], reverse=True))

            
          

?

二、函數(shù)式編程

python提供的一些函數(shù)式編程特性,主要是通過(guò)map(),filter()和reduce()這幾個(gè)函數(shù),結(jié)合匿名函數(shù)lambda一起使用。

通常,使用這些函數(shù)的速度會(huì)更快,因?yàn)樗鼈冎苯佑蒀語(yǔ)言編寫,運(yùn)行時(shí)不需要通過(guò)python解釋器間接調(diào)用。

下面是一些示例用法:

            
              # map(function, iterable)的用法: 對(duì)每個(gè)iterable的元素運(yùn)用function函數(shù),組成一個(gè)新的集合 
l = [1,2,3,4,5]
new_list = map(lambda x: x * 2, l)

# 測(cè)試map的速度
python3 -mtimeit -s'xs=range(1000000)' 'map(lambda x: x*2, xs)'

python3 -mtimeit -s'xs=range(1000000)' '[x * 2 for x in xs]'

python3 -mtimeit -s'xs=range(1000000)' 'l = []' 'for i in xs: l.append(i*2)'


# filter(function, iterable)的用法: 對(duì)每個(gè)iterable的元素運(yùn)用function函數(shù),將返回True的元素組合成一個(gè)新的集合
l = [1,2,3,4,5]
new_list = filter(lambda x: x % 2 == 0, l)


# reduce(function, iterable)的用法: 對(duì)一個(gè)集合進(jìn)行一些累積操作,function有兩個(gè)參數(shù),表示對(duì)iterable里的每個(gè)元素以及上一次調(diào)用后的結(jié)果調(diào)用function進(jìn)行運(yùn)算,最后返回一個(gè)單獨(dú)的數(shù)值
l = [1,2,3,4,5]
product = reduce(lambda x, y: x * y, l)
# 表示運(yùn)算:  product = 1 * 2 * 3 * 4 * 5

            
          

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論