該函數的用法類似于C語言中的宏定義,只是這個不需要定義名字,故叫匿名函數,但它們的作用都是用來提供一個簡短的函數。
print(lambda x:x+1) #打印匿名函數的內存地址
func1 = lambda x:x+1 #調用匿名函數第1步
func2 = lambda x,y:x*y #兩個參數的匿名函數
print(func1(10)) #調用匿名函數第2步
print(func2(4,130)) #需要傳入兩個參數以符合x,y
name = '鳴人'
func3 = lambda x:x + '——羊村村長'
print(func3(name))
python常用函數大全pdf、運行結果:
<function at 0x02C07B70>
11
520
鳴人——羊村村長
def foo(n):print(n)
def bar(name):print("my name is %s"%name) #使用了百分號類的字符串拼接
foo(bar('小沈陽'))
#會先傳入“小沈陽”執行bar(),并輸出,
#再將bar()的返回值,即None傳入foo()中,并輸出形參
運行結果:
my name is 小沈陽
None
num_1 = [1,2,3,4,5]
def map_test(array):ret = []for i in array: #把列表中的所有元素都乘2ret.append(i*2)return ret #可以返回一個列表
ret = map_test(num_1) #執行封裝函數
print(ret)
運行結果:
[2, 4, 6, 8, 10]
num_1 = [1,2,3,4,5]
def cut_one(x): #定義一個做減1運算的函數return x-1
def add_one(x): #定義一個做加1運算的函數return x+1
def map_test(func,array): #定義一個做全部遍歷的函數,并執行相關操作的函數ret=[]for i in array:res=func(i) #add_oneret.append(res)return ret
print(map_test(add_one,num_1)) #加1
print(map_test(cut_one,num_1)) #減1
運行結果:
[2, 3, 4, 5, 6]
[0, 1, 2, 3, 4]
#第一個參數是一個函數,第二個參數是一個可迭代對象(可循環的)
num_1 = [1,2,3,4,5]
res = map(lambda x:x+1,num_1) #每個數都加1
print(list(res)) #打印的時候必須輸出列表
msg='yourself'
print(list(map(lambda x:x.upper(),msg))) #將所有字符都變大寫
#map()函數返回的是內存地址,需要list列表化或者tuple元組化才可以打印出對應的值
c函數庫手冊中文版、運行結果:
[2, 3, 4, 5, 6]
[‘Y’, ‘O’, ‘U’, ‘R’, ‘S’, ‘E’, ‘L’, ‘F’]
原來,map()函數是做批量處理用的
num = [1,2,3,4,5,6,100]
def reduce_test(array):res = 0for n in array: #將num中的元素都累加起來res += nreturn res
print(reduce_test(num))
運行結果:121
num = [1,2,3,4,5,100]
def reduce_test(func,array,init=None): #某參數=None則為非必須參數if init == None:res = array.pop(0)#用戶沒有輸入值,則將第一個值賦值給res,并且刪除第一個值,實現每乘完一個就取出一個else:res = init #用戶輸入了一個值for n in array: #將num中的元素都累乘起來res = func(res,n) #傳入的兩個參數是需要相乘的兩個數,每次都傳入了func相乘后都更新res的值return res
print(reduce_test(lambda x,y:x*y, num, 2))
#該匿名函數接收兩個參數對x,y兩個參數做相乘處理
運行結果:
24000
from functools import reduce
num = [1,2,3,4,5,100]
print(reduce(lambda x,y:x*y, num, 2))
#reduce函數必須導入functools模塊,且第三個參數是非必須參數,為初始值
運行結果:
24000
很明顯,reduce()函數做整合用的。
python的reduce的用法。這個函數在我的文章:初學者python筆記(filter()函數完全詳解)里已經專門介紹了,這里就不做詳細分析,只拿出最后的用法。
people_onepiece=[{'name':'路飛','age':19}, #列表中有5個字典,每個字典都有2個鍵值對{'name':'娜美','age':20},{'name':'山治','age':22},{'name':'喬巴','age':12},{'name':'烏索普','age':21}]
print(list(filter(lambda n:n['age']<=20,people_onepiece)))
#傳入的參數是一個判斷年齡的匿名函數,一個列表
#如果年齡小于20歲,則將該字典保留下來
運行結果:
[{‘name’: ‘路飛’, ‘age’: 19}, {‘name’: ‘娜美’, ‘age’: 20}, {‘name’: ‘喬巴’, ‘age’: 12}]
可以看出,filter()函數是做篩選用的
map()函數,filter()函數,reduce()三大批量處理函數總結:
map函數是將一個列表中所有的元素都處理了一遍(最終返回的還是一個完整列表,位置和順序都不變)
filter函數是將一個列表中所有的元素篩選了一遍,判斷每個元素得到的布爾值(最終返回的是被篩選過的元素組成的一個列表)
python菜鳥教程,reduce函數是把一個完整的列表都整合出另一個數據,或累加結果,或累乘結果(最終返回的是一個元素)
map函數 | 每個元素都會變 |
---|---|
filter函數 | 保留符合條件的元素 |
reduce函數 | 整合出新元素 |
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态