Python高階函式: map reduce
阿新 • • 發佈:2018-12-09
———————— map ——————-
map 是內建函式,不需要匯入模組 map(func,iterable) 引數1; 是每個元素需要執行的函式, 注意: 傳入的是函式名 該函式必須要傳入一個引數, 該函式必須有返回值 引數2: 是一個可迭代物件 (存放多個數據的集合) 作用: 將引數1的函式依次作用在可迭代物件的每一個元素上,會將每個結果封裝成一個可迭代物件,並返回
# 例: [1,2,3] --- > ["1","2","3"]
# for迴圈 1 ---> "1" 執行 str
dataList = [1,2,3]
# 注意:結果是一個map
res = map(str,dataList)
print(res)
# print(type(res))
# 可以將map直接轉換成list
print(list(res))
#自定義map函式
def myMap(func,listData):
listRes = []
# #獲取每一條資料依次執行函式
for data in listData:
res = func(data)
listRes.append(res)
return listRes
dataList = [1,2,3]
listRes = myMap(str,dataList)
print(listRes)
# ["1","2","3"] --> [1,2,3]
listData = ["1","2","3","4","5"]
res = map(int,listData)
# print(list(res))
————————reduce——————-
reduce 不是內建函式, 需要匯入 from functools import reduce reduce(func,squ) 引數1: 函式, 用來將兩個數進行整合 引數2: 是一個包含多個數據的集合
作用: 一個函式作用在序列上,這個函式必須接收2個引數,reduce把結果繼續和序列的下一個元素累計運算 例: 1 + 2 + 3 +4 +5 ………100 求和 1.迴圈 2.遞迴 sum(100) = sum(99) + 100 3.高階函式: 1 + 2 a + b 原理: res = f(f(f(a,b),c),d)
from functools import reduce
# 實現: 1 + 2 + 3 +4 +5 .........100 ---> a + b
def add(a,b):
return a + b
listData = list(range(1,101))
res = reduce(add,listData)
# print(res)
————————混用——————-
# 任務: "56589" ----> 56589
# 思路: "56589" --- "5","6","5","8","9" ---> 5,6,5,8,9 ----> 56589
# 解決 list map(,) reduce()
from functools import reduce
def strStr(strData):
listStr = list(strData)
def func1(a,b):
return a*10 + b
return reduce(func1,map(int,listStr))
strData = "562312"
res = strStr(strData)
# print(res)
# print(type(res))