映射類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。