常見 Python內置函數

常見Python內置函數

Python提供了很多能實現各種功能的內置函數。內置函數,就是在Python中被自動加載的函數,任何時候都可以使用。

map函數
filter函數
reduce函數

map函數

map函數會根據提供的函數對指定的序列做映射。

map函數的定義如下:

map(function,iterable, …)

上述定義中,第一個參數function表示的是一個函數名,第二個參數itherable可以是序列,支持迭代的容器或迭代器。當調用map函數時,itherable中的每個元素都會調用function函數,所有元素調用function函數返回的結果會保存到一個迭代器對象中。

這裏說明一下,在Python2中,map函數的返回值是列表list類型。

如果希望將迭代器對象轉換爲列表,則可以通過list函數進行轉化。此外,還可以使用for循環直接遍歷迭代器對象,從而取出其內部的每個元素。
示例代碼如下:

func = lambda x: x+2
result = map(func, [1, 2, 3, 4, 5])
print(list(result))

上述示例,定義了一個匿名函數func,返回某個數加2以後的結果,接着調用map函數將[1, 2, 3, 4, 5]中的每個元素取出來,作爲func的參數調用func函數,之後將結果轉換爲列表的形式顯示。
程序輸出結果爲:
在這裏插入圖片描述
如果map函數中傳入的function函數帶有兩個參數,那麼map函數需要傳遞兩個序列,代碼如下:

result = map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])
print(list(result))

運行結果如下:
在這裏插入圖片描述

filter函數

filter函數會對指定序列執行過濾操作。

filter函數的定義如下:

filter(function, itherable)

上述定義中,第一個參數function可以是函數名稱或者None,第二個參數itherable可以是序列,支持迭代的容器或者迭代器。返回值爲迭代器對象(在Python2中,filter函數的返回值是列表類型)。其中,function函數只能接收一個參數,而且該函數的返回值爲布爾值。

filter函數的作用是以參數迭代器中的每個參數分別調用function函數,最後返回的迭代器包含調用結果爲True的元素。
代碼如下:

func = lambda x: x % 2
result = filter(func, [1, 2, 3, 4, 5])
print(list(result))

上述中,定義了一個匿名函數func,返回某個數取餘以後的結果,接着調用filter函數將[1, 2, 3, 4, 5]中的每個元素取出來,作爲func的參數調用func函數,之後將結果轉換爲列表的形式顯示。
程序輸出結果爲:
在這裏插入圖片描述

reduce函數

reduce函數會對參數迭代器中的元素進行積累。

reduce函數的定義如下:

functools.reduce(function, itherable[, initializer])

上述定義中,function是一個帶有兩個參數的函數;第二個參數itherable是一個迭代器對象,initializer表示固定的初始值。reduce函數會依次從迭代器對象中取出每個元素,和上一次調用function的結果作爲參數再次調用function函數。

在Python3中,reduce函數被放置在functools模塊中,使用時需要先引入,代碼如下:
from functools import reduce
func = lambda x, y: x + y
result = reduce(func, [1, 2, 3, 4, 5])
print(result)

from functools import reduce
func = lambda x, y: x + y
result = reduce(func, [1, 2, 3, 4, 5])
print(result)

上述示例中,首先引入了functools模塊,然後定義了一個計算兩個數的和的匿名函數。
由於在調用reduce函數時傳入了func和序列,所以程序會把序列的每個元素取出來,和上次調用後的結果作爲參數再次調用func函數,最後將結果返回給result。
運行結果:
在這裏插入圖片描述
如果在調用reduce函數時傳入了initializer參數,那麼function函數會以迭代器中的第一個元素與initializerd的和作爲參數進行調用。
代碼如下:

from functools import reduce
result = reduce(lambda x, y: x+y, [1, 2, 3, 4], 5)
print(result)

運行結果爲:

15

此外。itherable參數還可以傳入字符串類型,代碼如下:

from functools import reduce
result = reduce(lambda x, y: x+y, ['aa', 'bb', 'cc'], 'dd')
print(result)

運行結果如下:

在這裏插入圖片描述

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