成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python里面有幾個有趣的函數

開發(fā) 后端
今天主要是分享5個python內置的小函數,都是個人覺得強大而精致的幾個函數。不是高深的知識,純粹因為覺得好用而分享。

 眾所周知,python功能強大、語法靈活,這些得益于其豐富而強大的庫。除了眾多第三方庫和方法函數,python自帶的很多函數也非常有趣,用起來稱得上優(yōu)雅。




?[[320251]]?


今天主要是分享5個python內置的小函數,都是個人覺得強大而精致的幾個函數。不是高深的知識,純粹因為覺得好用而分享。

01 一用而過:lambda

很多語言都有匿名函數,python的匿名函數寫作lambda,當需要實現一定功能而又不想“大張旗鼓”的def一個函數時,lambda就是最優(yōu)的選擇。

其語法格式一般是這樣的:


lambda x:x**2
# <function __main__.<lambda>(x)>

也可以將它賦值給一個變量,由于python中一切皆對象,所以后續(xù)程序中就可以用該變量調用這個匿名函數。


f = lambda x:x**2
f(2)
# 4

當然,這里其實沒必要應用lambda來實現,因為既然要顯式調用,還不如干脆直接寫個明確的函數罷了。lambda函數更廣泛的應用場景在于該匿名函數作為另一個函數的參數傳遞時,應用就比較合適了,例如,將lambda作為sort()函數的key參數,就可以實現特定功能的排序。


dyct = {'a':2, 'b':1, 'c':5}
sorted(dyct.items(), key = lambda x:x[1])
# [('b', 1), ('a', 2), ('c', 5)]

02 智能解壓:zip

zip函數人如其名,是打包或者解包的函數,接受2個以上可迭代變量,輸出對應位置組成元組后的迭代類型。例如:


a = ['a', 'b', 'c']
b = (4, 5, 6)
zip(a,b)
# <zip at 0x1da016d15c8>
list(zip(a,b))
# [('a', 4), ('b', 5), ('c', 6)]
tuple(zip(a,b))
# (('a', 4), ('b', 5), ('c', 6))

也可以接受多于2個輸入可迭代變量,而且如果各迭代變量長度不一致也不會報錯,只是此時返回迭代變量取決于輸入總長度最短的一個。例如:


a = ['a', 'b', 'c', 'd', 'e']
b = (4, 5, 6, 7)
c = [True, False, True]
list(zip(a,b,c))
# (('a', 4, True), ('b', 5, False), ('c', 6, True))

與zip打包相對應的用法是解包,即對一個打包形式的元素進行依次解包,并返回多個新的列表。例如:


aZip = (('a', 4, True), ('b', 5, False), ('c', 6, True))
a, b, c = zip(*aZip)
# a:('a', 'b', 'c')
# b:(4, 5, 6)
# c:(True, False, True)

03 一一映射:map

map函數也正如其取名一樣,是一個將接受的迭代變量依次經過某種映射,并輸出映射后的迭代變量。例如,如果對列表中的某個變量依次完成求值,并返回一個新的列表,則可以應用map:


a = [1, 2, 3, 4]
map(str, a)
# <map at 0x1da017136d8>
list(map(str, a))
# ['1', '2', '3', '4']

這是map函數的一個典型用法:接受2個參數,第一個參數(上例中是str()函數)是一個要作用的函數,第二個參數是可迭代變量。

當第一個函數的參數是是一個多變量函數時,map也可以接受更多的參數。例如:


a = [1, 2, 3, 4]
b = [2, 2, 3, 3]
list(map(lambda x, y:x**y, a, b))
# [1, 4, 27, 64]

與zip函數中類似,當map里的函數參數長度不匹配時并不會報錯,只是輸出結果將由最短的決定:


a = [1, 2, 3, 4]
b = [2, 2]
list(map(lambda x, y:x**y, a, b))
# [1, 4]

04 一夫當關:filter

與map函數類似,filter函數也接受一個函數及其變量作為參數,只是要求這個函數的返回結果是bool型,并用這個bool的結果決定輸出的取舍問題。例如需要對一個輸入列表過濾,要求保留3的倍數:


a = range(10)
filter(lambda x:x%3==0, a)
# <filter at 0x1da0171c0f0>
list(filter(lambda x:x%3==0, a))
# [0, 3, 6, 9]

這里需注意,當filter的第一個函數返回值不是bool型時不會報錯,只是它會轉化為bool型判斷,如果判斷結果不是False(python中會判為False的變量包括0、None、[]等等),則會將其輸出,否則過濾掉:


a = range(10)
list(filter(lambda x:x%3, a))
# [1, 2, 4, 5, 7, 8]

05 萬劍歸宗:reduce

map和filter函數都是多入多出型,實質上是完成了特定的變換或篩選。reduce則是歸約函數,將一系列輸入變量經過特定的函數后轉化為一個結果輸出。不過可能是由于應用場景有限的原因,reduce在python3中已不再是全局調用函數,必須要從functools包中導入方可使用:


from functools import reduce
a = range(5)
reduce(lambda x, y: x+y, a)
# 10

reduce函數還可以接受一個可選的初始值作為參數。應用reduce函數可以實現很多小trick,就看能不能想的到用的出:


from functools import reduce
s = 'abcdefg'
reduce(lambda x, y: y+x, s, 'AA')
# 'gfedcbaAA'

06 最后

當然,盡管幾個函數用法不可謂不優(yōu)美、功能不可謂不強大,但都不是必須的,甚至某種程度上都可以用其他形式加以替代,例如map和filter函數都可以用列表推導式來簡單實現,reduce函數功能也頂多用一個for循環(huán)迭代就能解決。

但在致力于使python程序變得更加簡潔優(yōu)雅乃至耍秀的路上,這些函數也確有其用武之地,未嘗不值得一試!

責任編輯:華軒 來源: 今日頭條
相關推薦

2018-05-07 15:32:54

編程語言Python程序員

2023-03-13 08:47:06

CSS數學函數

2021-10-14 06:52:47

算法校驗碼結構

2014-01-22 09:46:42

JavaScript數組

2022-03-30 09:01:37

CSS屬性函數

2016-12-21 09:35:55

JavaScript原生數組函數

2021-11-04 09:55:59

代碼編程語言

2020-07-29 10:00:38

PythonEllipsis索引

2022-10-10 23:19:02

Python腳本語言工具庫

2017-08-08 16:04:30

Python圖片處理文章提取器

2023-11-08 10:12:40

架構函數元素

2022-01-23 14:08:52

PythonPygame

2022-12-28 08:59:11

2017-07-12 16:45:10

Docker概念鏡像

2023-11-30 07:37:49

MySQL函數

2011-05-23 17:29:29

JS

2021-06-05 23:39:52

c++函數場景

2009-06-19 11:03:30

Java Web函數

2024-03-12 10:36:06

函數指針代碼

2014-09-19 11:17:48

面試題
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费观看的黄色网址 | 午夜爽爽男女免费观看hd | 久久性色 | 色噜噜亚洲男人的天堂 | 日日操操操 | 欧美精品首页 | 中文字幕人成乱码在线观看 | 情侣黄网站免费看 | 亚洲精品观看 | 欧美一区二区三区一在线观看 | 精品不卡 | 欧美一级小视频 | 99re视频在线 | 免费黄网站在线观看 | 欧美激情精品久久久久久变态 | 古典武侠第一页久久777 | 久久久91精品国产一区二区三区 | 欧美一级在线观看 | 红色av社区 | 国产精品夜间视频香蕉 | av手机在线 | 亚洲一区二区高清 | 99国产精品久久久久久久 | k8久久久一区二区三区 | japanhdxxxx裸体| 国产精品久久国产愉拍 | 国产精品久久久久久久久久久免费看 | 国产精品一区二区三区久久久 | 精品一区二区三区在线视频 | 中文字幕乱码一区二区三区 | 伊人久操| 精品久久久久久亚洲综合网 | 国产东北一级毛片 | 国产精品日韩一区二区 | 成人黄色av网址 | 亚洲精品9999| 男女网站免费观看 | 中文字幕 在线观看 | 国产精品资源在线 | 久久国产精品一区二区三区 | 免费观看一级特黄欧美大片 |