<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
人生苦短,菜鳥學Python!
今天,我們會一次性分享6個堪稱神仙的內建函數。在很多計算機書籍中,它們也通常作為高階函數來介紹。而我自己在日常工作中,經常使用它們來使程式碼更快,更易於理解。
Lambda函數用於建立匿名函數,即沒有名稱的函數。它只是一個表示式,函數體比def簡單很多。當我們需要建立一個函數來執行單個操作並且可以在一行中編寫時,就可以用到匿名函數了。
lambda [arg1 [,arg2,.....argn]]:expression
lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在lambda表示式中封裝有限的邏輯進去。例如:
lambda x: x+2
如果我們也想像def定義的函數隨時呼叫,可以將lambda函數分配給這樣的函數物件。
add2 = lambda x: x+2 add2(10)
輸出結果:
利用Lambda函數,可以將程式碼簡化很多,具體再舉個例子。
如上圖所示,結果列表newlist是使用lambda函數用一行程式碼生成的。
map()函數會將一個函數對映到一個輸入列表的所有元素上。
map(function,iterable)
比如我們先建立了一個函數來返回一個大寫的輸入單詞,然後將此函數應有到列表colors中的所有元素。
def makeupper(word): return word.upper() colors=['red','yellow','green','black'] colors_uppercase=list(map(makeupper,colors)) colors_uppercase
輸出結果:
此外,我們還可以使用匿名函數lambda來配合map函數,這樣可以更加精簡。
colors=['red','yellow','green','black'] colors_uppercase=list(map(lambda x: x.upper(),colors)) colors_uppercase
如果我們不用Map函數的話,就需要使用for迴圈。
如上圖所示,在實際使用中Map函數會比for迴圈依次列表元素的方法快1.5倍。
當需要對一個列表進行一些計算並返回結果時,reduce()是個非常有用的函數。舉個例子,當需要計算一個整數列表所有元素的乘積時,即可使用reduce函數實現。[1]
它與函數的最大的區別就是,reduce()裡的對映函數(function)接收兩個引數,而map接收一個引數。
reduce(function, iterable[, initializer])
接下來我們用範例來演示reduce()的程式碼執行過程。
from functools import reduce def add(x, y) : # 兩數相加 return x + y numbers = [1,2,3,4,5] sum1 = reduce(add, numbers) # 計算列表和
得到結果sum1 = 15,其程式碼執行過程如下方動圖所示。
▲程式碼執行過程動圖
結合上圖我們會看到,reduce將一個相加函數add()作用在一個列表[1,2,3,4,5]上,對映函數接收了兩個引數,reduce()把結果繼續和列表的下一個元素做累加計算。
此外,我們同樣可以使用匿名函數lambda來配合reduce函數,這樣可以更加精簡。
from functools import reduce numbers = [1,2,3,4,5] sum2 = reduce(lambda x, y: x+y, numbers)
得到輸出sum2= 15,與之前結果保持一致。
需要注意:Python3.x開始reduce()已經被移到functools模組裡[2],如果我們要使用,需要用from functools import reduce匯入.
enumerate()函數用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在for迴圈當中。它的語法如下所示:
enumerate(iterable, start=0)
它的兩個引數,一個是序列、迭代器或其他支援迭代物件;另一個是下標起始位置,預設情況從0開始,也可以自定義計數器的起始編號。
colors = ['red', 'yellow', 'green', 'black'] result = enumerate(colors)
如果我們有一個存放colors的顏色列表,執行後就會得到一個enumerate(列舉) 物件。它可以直接在for迴圈中使用,也可以轉換為列表,具體用法如下所示。
for count, element in result: print(f"迭代編號:{count},對應元素:{element}")
zip()函數用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的列表[3]。
我們還是用兩個列表作為例子演示:
colors = ['red', 'yellow', 'green', 'black'] fruits = ['apple', 'pineapple', 'grapes', 'cherry'] for item in zip(colors,fruits): print(item)
輸出結果:
當我們使用zip()函數時,如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同。
prices =[100,50,120] for item in zip(colors,fruits,prices): print(item)
filter()函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表,其語法如下所示[4]。
filter(function, iterable)
比如舉個例子,我們可以先建立一個函數來檢查單詞是否為大寫,然後使用filter()函數過濾出列表中的所有奇數:
def is_odd(n): return n % 2 == 1 old_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] new_list = filter(is_odd, old_list) print(newlist)
輸出結果:
今天分享的這6個內建函數,在使用 Python 進行資料分析或者其他複雜的自動化任務時非常方便。
到此這篇關於Python中號稱神仙的六個內建函數的文章就介紹到這了,更多相關python內建函數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45