概念 : 能夠把函式當成引數傳遞的就是高階函式
map
語法 : map(func,iterable)
功能: 處理資料
把iterable中的資料乙個乙個拿出來,扔到func函式中做處理
把處理之後的結果放到迭代器當中,最後返回迭代器
引數: func : 自定義函式 或 內建函式
iterable : 可迭代性資料(容器型別資料 range物件 迭代器)
返回值: 迭代器
(1) lst= [「1」,「2」,「3」,「4」] => [1,2,3,4]
lst = ["1","2","3","4"]
# 常規寫法
lst_new=
for i in lst:
print(lst_new)
# map 改寫
it = iter(int,lst)
# 獲取迭代器中的資料
1.next
res= next(it)
print(res)
2.for
for i in it:
print(i)
3.for + next
for i in range(4):
res= next(it)
print(res)
4. list 強轉
print(list(it))
(2) [1,2,3,4] =>[2,8,24,64]
lst = [1,2,3,4]
# 常規寫法
lst_new=
for i in lst:
res = i <(3) =>[97,98,99]
dict=
# 常規寫法
dic=
def func(lst):
lst_new =
for i in lst:
res = dic[i]
return lst_new
res= func(lst=["a","b","c"]
print(res)
(2)將鍵值對反轉
dic=
dic_new = {}
for k,v in dic.items():
dic_new[v]=k
print(dic_new)
lst = ["a","b","c"]
lst_new=
for i in lst:
res= dic_new[i]
print(lst_new)
# map 改寫
def func(n):
dic =
dic_new={}
for k,v in dic.items():
dic_new[v]=k
print(dic_new)
return dic_new[n]
lst = ["a","b","c"]
it = map(func,lst)
print(list(it))
filter
語法 : filter(func,iterable)
功能 : 過濾資料
return true 當前這個資料保留
return false 當前這個資料捨棄
引數: func : 自定義函式
iterable : 可迭代型資料(容器型別資料,range物件,迭代器)
返回值: 迭代器
(1)lst = [1,2,3,4,5,6,7,8,9,10]=>[2,4,6,8,10]
# 常規寫法
lst = [1,2,3,4,5,6,7,8,9,10]
lst_new=
for i in lst:
if i % 2 ==0:
print(lst_new)
# filter改寫
def func(i):
if i % 2==0:
return true
else:
return false
it = filter(func,lst)
#獲取資料
1.next 呼叫
res= next(it)
print(res)
2.for
for i in it:
print(i)
3.for + next
for i in range(3):
res= next(it)
print(res)
4.list
print(list(it))
# filter + lambda 改寫
it = filter(lambda i : true if i % 2 ==0 else false , lst)
print(list(it))
reduce
語法 : reduce(func,iterable)
功能 : 計算資料
先把iterable中的前兩個值拿出來,扔到func當中做運算,
把計算的結果和iterable中的第三個元素在扔到func當中做運算,
再把結果算出來,和第四個元素做運算,以此類推
直到所有結果運算完畢.返回該結果
引數: func : 自定義函式
iterable : 可迭代型資料(容器型別資料,range物件,迭代器)
返回值 : 計算之後的結果
(1) lst=[5,4,8,8] => 整型5488
form functools import reduce
# 常規寫法
# 方法一
lst = [5,4,8,8]
strvar = ""
for i in lst:
strvar +=str(i)
print(int(strvar))
# 方法二
lst = [5,4,8,8]
it = iter(lst)
num1=next(it)
num2= next(it)
num = num1*10+num2
for i in it:
num = num*10+i
print(num)
# **reduce 改寫**
def func(x,y):
return x*10+y
lst= [5,4,8,8]
res= reduce(func,lst)
print(res)
# reduce + lambda 改寫
res= reduce(lambda x,y : x*10 +y , lst)
print(res)
(2) 「789」 =>數字7,8,9
def func1(x,y):
return x*10 + y
def func2(n):
dic =
return dic[n]
it = map(func2,"789")
res= reduce(func1,it)
print(res)
sorted
語法 : sorted(iterable,key=函式,reverse=false)
功能 : 排序
引數: iterable:可迭代型資料(容器型別資料,range物件,迭代器)
key : 指定自定義函式或內建函式
reverse : 代表公升序或者降序 , 預設是公升序(從小到大排序) reverse=false
返回值 : 排序後的結果
(1) 預設從小到大排序
lst= [1,2,-23,3,100]
print(sorted(lst))
(2) recerse = true 從大到小排序
res= sorted(lst,reverse = true)
print(res)
(3) 按照絕對值排序 abs
res =sorted(lst,key = abs)
print(res)
(4)自定義函式進行排序
def func(n):
return n % 10
lst = sorted(lst,key=func)
print(lst)
sorted 和 sort 的區別
sorted 可以排序一切容器型別資料,sort只能排序列表
sorted 返回的是新列表,sort是基於原有的列表進行修改
Python之高階函式
一 什麼是高階函式 函式作為實參傳遞給函式的或者函式名為返回值的函式稱為高階函式。1 實參傳遞給函式 2 函式名為返回值 二 系統內建的高階函式 1 map函式 至少需要兩個引數,第乙個引數是函式名,第二個引數是序列 str,list,tuple map功能 把序列中的每乙個元素作為引數,傳給函式進...
Python之高階函式
做過swift開發的童鞋都知道,在swift中有許多的高階函式 map,filter,reduce,zip等 這些在開發中讓我們節省大量 python中同樣有許多的內建函式,但是這裡也只介紹幾個常用的高階函式 根據提供的函式對指定序列做對映,並返回對映後的序列 map function,iterab...
python之高階函式
函式程式設計及其優勢 無 不修改狀態,表示式形式,專注與計算,接近自然語言。便於 熱公升級,無狀態不用考慮併發過程中的資源搶占及鎖問題。函式也是物件,也可以賦值給變數,當然函式的引數也可以為另一函式。map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依...