Python高階函式之map與reduce

2021-08-17 16:53:25 字數 1180 閱讀 2550

python為我們提供了多種高階函式,map(fun,x)的作用是將fun函式依次作用到x這種iterable型別上,並且返回乙個iterator型別。那麼什麼是iterable和iterator呢?

簡單的說,反是可用於for迴圈的物件(諸如list,tuple,dict,str)被稱為iterable型別;而可作用與next()函式的物件都是iterator型別(稱之為懶惰型)。

reduce(fun,x)要求fun必須是兩個引數,而且reduce把fun的結果作用到序列的下乙個元素上,比如reduce(fun,[x1,x2,x3])的jie就是

fun(fun(x1,x2),x3)

下面就讓我們提供乙個簡單的例子來加深對這些高階函式和型別的理解吧。

題目描述:現在有乙個字串型別的資料data ='123.456',需要自己編寫乙個函式將其轉換為浮點數型別,得到的輸出應為data= 123.456;

# -*- coding: utf-8 -*-

from functools import reduce

digital =

def strtofloat(l):

if not isinstance(l, str):

raise typeerror('輸入的型別不是字串型別');

for i ,j in enumerate( l ):

if j == '.':

l = l[0:i] + l[i+1:];

break ;

def fn(x,y):

return x * 10 + y ;

def chartonum(s):

return digital[s]

return reduce( fn , map( chartonum , l ) ) / pow( 10 ,( len( l ) - i ) ) ;

print(r"strtofloat(\'123.456\') =", strtofloat('123.456'))

輸出為:

讓我們解析一下上面的**,for i , j in enumerate()是為了使用類似於c的for迴圈,i代表的是迭代的次數,j代表的是iterable型別的元素。

Python之Map高階函式

map 函式 map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依次作用在 list 的每個元素上,得到乙個新的 list 並返回。例如,對於list 1,2,3,4,5,6,7,8,9 如果希望把list的每個元素都作平方,就可以用map 函式 因此...

Python高階函式 map

map 函式原型 map 函式,序列 用法 map將傳入的函式依次作用到序列的每個元素,並把結果作為新的序列返回。eg 1 使用map實現f x x x,x是list 1,2,3,4 def f x return x x.r map f,1 2,3 4 list r 1,4,9,16 2 把list...

Python高階函式 map和reduce

map fn,lsd fn 是乙個函式,可以使自己定義的,也可以是python內建的函式 lsd 是乙個序列 功能 依次將lsd中的元素作用到fn上 屬於惰性序列通過map函式進行處理,將字串型的列表裝換稱整型列表。l 1 2 3 4 5 def func key dict1 return dict...