日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python匿名函数调用_python3笔记十六:python匿名函数和高阶函数

發布時間:2025/3/21 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python匿名函数调用_python3笔记十六:python匿名函数和高阶函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:學習內容

lambda函數

map函數與reduce函數

filter函數

sorted函數

二:匿名函數-lambda

1.概念:不使用def這樣的語句去定義函數,使用lambda來創建匿名函數

2.特點:

lambda只是一個表達式,函數體比def簡單

實現的邏輯比較簡單,主體是一個表達式,而不是代碼塊,lambda表達式中封裝簡單的邏輯

lambda函數有自己的命名空間,且不能訪問自由參數列表之外的或者全局命名空間的參數

3.格式:

lambda 參數1,參數2,......,參數n:expression

4.lambda函數練習一

a=lambda x:x+1

a(1)

a(2)

lambda作為一個表達式,定義了一個匿名函數,上面的代碼x為入口參數,x+1為函數體,用函數來表示為:

def g(x):

return x+1

5.lambda函數練習二

a=lambda x,y,z:(x+y)**z

print(a(1,2,3))

6.lambda函數練習三

def make_repeater(n):

return lambda s:s*n

twice=make_repeater(2)

twice('word')

twice(5)

上面的函數可以轉換為:

twice=lambda s,n:s*n

twice('word',2)

twice(5,2)

7.lambda函數練習四

lambda表達式會返回一個函數對象,如果沒有變量接受這個返回值,它很快就會被丟棄,也正是由于lambda只是一個表達式,所以它可以直接作為list、dict等成員

lists=[lambda s:s**3,lambda a:a**3]

data=lists[0]

data(2)

三:高階函數-map和reduce

python內置了map()和reduce函數()

1.map()函數

格式:map(fn,lsd)

參數1是一個函數,fn只有一個參數

參數2是一個序列

功能:將傳入的函數依次作用在序列中的每一個元素,并把結果作為新的Iterator返回

舉例1:

#將單個字符轉成對應字面量整數

def chr2int(chr):

return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[chr]

list1 = ["2","1","6","5"]

#惰性列表,需要用list顯示轉換才會顯示

res = map(chr2int,list1)

print(res)

print(list(res))

舉例2:

#將整數元素的序列轉為字符型的

#[1,2,3,4] ["1","2","3","4"]

a = [1,2,3,4]

print(list(map(str,a)))

2.reduce()函數

格式:reduce(fn,lsd)

參數1為函數,fn有兩個參數

參數2位列表

功能:一個函數作用在序列上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素累計運算

舉例1:

from functools import reduce

#求一個序列的和

def mySum(x,y):

return x+y

list2 = [1,2,3,4,5]

r = reduce(mySum,list2)

print(r)

3.map()函數和reduce()函數結合使用

舉例1:

#將字符串轉成對應字面量數字

def str2int(str):

def fc(x,y):

return x*10 + y

def fs(chr):

return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[chr]

return reduce(fc,map(fs,list(str)))

a = str2int("13579")

print(a)

print(type(a))

四:高階函數-filter()

1.filter()函數

格式:filter(fn,lsd)

參數1為函數

參數2位序列

功能:用于過濾序列,即把傳入的參數依次作用于序列的每個元素,根據返回的是True還是False決定是否保留該元素

舉例1:

list1 = [1,2,3,4,5]

#篩選條件,偶數保留

def func(num):

if num % 2 ==0:

return True

return False

#惰性序列,需要顯示轉換為列表才能展示數據

res = filter(func,list1)

print(list(res))

print(list1)

舉例2:

data = [["姓名","年齡","愛好"],["tom",25,"無"],["hdd",26,"游泳"]]

def fun2(v):

v = str(v)

if v == "無":

return False

return True

for line in data:

s = filter(fun2,line)

print(list(s))

四:高階函數-sorted()

用于排序

1.sorted()函數--普通排序

list1 = [4,7,2,6,3]

list2 = sorted(list1) #默認升序排序

print(list1)

print(list2)

2.sorted()函數--降序排序

list5 = [4,7,2,6,3]

#reverse 按升序排完以后反轉

list6 = sorted(list5,reverse=True)

print(list5)

print(list6)

3.sorted()函數--字符串排序按ASCII碼值排序

#字符串排序,比較ASCII碼值

list7 = ["b","d","a","e"]

list8 = sorted(list7)

print(list7)

print(list8)

4.sorted()函數-自定義排序規則

#按絕對值大小排序

list3 = [4,-7,2,6,-3]

#key接受函數來實現自定義排序規則

list4 = sorted(list3,key=abs)

print(list3)

print(list4)

5.sorted()函數-自定義排序規則2

#按字符串長短排序,函數可以自己寫

def myLen(str):

return len(str)

list9 = ["b333","d11111111","a22","e4322"]

list10 = sorted(list9,key=myLen)

print(list9)

print(list10)

總結

以上是生活随笔為你收集整理的python匿名函数调用_python3笔记十六:python匿名函数和高阶函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。