python 高階函數


映射類map():會根據提供的函數對指定序列做映射,映射的結果可以進行相應的類型轉換。

語法格式如下:

# 第一個參數為映射函數,之后的一個或多個參數為可迭代類型,返回結果為map對象
map(func, *iterables) --> map object
# 迭代類型參數的個數,取決於映射函數所需的參數。

注意:當有多個迭代類型參數參加映射時,映射結果取決於長度小的迭代類型。即當其中一個迭代類型映射結束,則全部結束。

 

示例一:返回列表中元素平方后的結果

list_x = [1, 2, 3, 4, 5]
print(map(lambda x : x*x, list_x))
print(list(map(lambda x : x*x, list_x)))

-------------------------------------
<map object at 0x0000011C145567B8>
[1, 4, 9, 16, 25]

 

示例二:對兩個列表中的元素對應求和

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

---------------------------
[2, 4, 6, 8, 10]

 

累積運算函數reduce():會根據提供的運算函數對迭代類型參數中的元素進行累積運算。

語法格式如下:

from functools import reduce
# 最后一個可選參數initial為累積運算的初始值
reduce(function, sequence[, initial]) -> value

 

示例三:對列表中的元素以10為初始值進行累乘

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

---------------------------
1200

 

過濾類filter():根據提供的判斷函數,對迭代類型參數進行過濾,保留使運算函數返回true的元素。

語法格式如下:

# 當第一個參數為None時,保留其中為true的元素
filter(function or None, iterable) --> filter object

 

示例四:保留列表中小於100的元素

list_x = [12, 809, 87, 900, 100]
print(filter(lambda x : True if x < 100 else False, list_x))
print(list(filter(lambda x : True if x < 100 else False, list_x)))

---------------------------
<filter object at 0x000002B8827267B8>
[12, 87]

 

總結一下

map()是映射類,reduce()是累積運算函數,filter()是過濾類,其中map()和reduce()返回的都為它們的對象,reduce()返回的是累積運算后的結果,使用reduce()時要from functools import reduce。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM