1. 程式人生 > >python--004--函數(map、filter、reduce)

python--004--函數(map、filter、reduce)

布爾 python3 pri num fun imp def lambda filter

1. map 函數
# 實現指定列表自增1
num_1 = [1, 2, 10, 5, 6, 8]

def map_test(func, array):
    ret = []
    for i in array:
        res = func(i)
        ret.append(res)
    return ret


print(map_test(lambda x: x + 1, num_1))
# 這就是python提供的map所實現的功能
print(內置函數map,處理結果, map(lambda x: x + 1, num_1))
# output: [2, 3, 11, 6, 7, 9] # 內置函數map,處理結果 <map object at 0x00000000027933C8> ,返回的是叠代器,只能處理一次 res = map(lambda x: x + 1, num_1) print(list(res)) # output;[2, 3, 11, 6, 7, 9]


2、 filter函數
movie_people = [peiqi_ab, qiaozhi_ab, suxi_ab, cat]
print(filter(lambda n: n.endswith(ab), movie_people))
print(list(filter(lambda n: n.endswith(ab), movie_people)))

3、reduce函數 ---python2中直接用
from functools import reduce ---python3中使用reduce函數需要導入

from functools import reduce

num_1 = [1, 2, 10, 5, 6, 8]
print(reduce(lambda x, y: x + y, num_1, 1))     # 最後一個值為附的初始值


4、區別

map:處理序列中的每個元素,得到的結果是一個“列表”,該“列表”元素個數及位置與原來一樣


filter:遍歷序列中的每個元素,判斷每個元素得到一個布爾值。如果是true則保留
reduce:處理一個序列,然後把序列進行合並操作



python--004--函數(map、filter、reduce)