python3三大常用函數之zip、map、reduce介紹

在python編碼過程中,實際上是寫機器學習代碼過程中,我發現有三個高頻函數被使用,也就是這篇博客要介紹的zip、map以及reduce三大函數。

其中map、zip是python的內置函數,也就是全局函數,在python3中reduce函數不再是內置函數,它被放在了functools模塊中了。

對於內置函數我們可以在python窗口界面中通過help(func)命令方式獲取其使用方法。

一、zip函數

首先通過help(zip)來獲取zip方法使用說明
在這裏插入圖片描述從說明可以看出,zip方法傳入的參數是一個或多個可迭代的對象,我們知道數組( list )和元組( tuple )都是可迭代對象,所以可以傳入數組或者元組對象,zip函數的返回值是一個zip object,這個zip object也是一個可迭代對象,這個可迭代對象的每個元素是一個元組,從這裏我們也可以知道zip object實際上也可以作爲參數傳入zip方法。這裏來看看zip方法的具體使用
在這裏插入圖片描述
從以上的代碼我們可以直觀的看出zip函數實際上就是把幾個迭代對象的對應元素提取出來拼接成一個元組,然後把各個元組組成一個可迭代的zip object(所謂的可迭代也就是可以用將zip object用於for …in …語法)

二,map函數

map函數對比zip函數更加負載一點,我們可以先看看help(map)的說明
在這裏插入圖片描述從這裏可看出map函數的第一個參數是一個函數或者lambda表達式,後面的參數爲一個或者多個可迭代對象,而返回的map object也是一個可迭代對象,這裏還是通過例子來展示如何使用map方法
在這裏插入圖片描述
這裏使用map完成了相加以及,求平方數的兩個操作

三、reduce函數

在python3中,reduce已經不是內置函數了,需要通過一下方式引入

from functools import reduce

還是通過help(reduce)來看看reduce方法的使用吧
在這裏插入圖片描述從方法說明可以看出,reduce方法第一個參數是一個包含兩個參數的函數或者lambda表達式,第二個參數是一個序列(sequece,而list和tuple是最常用的兩個序列),還有一個initial的可選參數。reduce函數返回的是一個value值

假設第一個參數函數是func(x,y),第二個參數是一個列表[a1,a2,a3,a4],初始化參數initial是a0那麼最終ruduce的輸出就是
func(func(func((func(a0,a1),a2),a3),a4),如果沒有傳入initial參數,則直接從a1開始計算。這裏可看一個具體的例子
在這裏插入圖片描述
到這裏zip、map以及reduce三大方法就介紹完了,很簡單是不是,記在這篇博客實際上就是有些時候記不大請了,自己可以來看看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章