python常用函數大全pdf,初學者python筆記(map()函數、reduce()函數、filter()函數、匿名函數)

 2023-10-04 阅读 31 评论 0

摘要:文章目錄一、匿名函數二、map()函數三、reduce()函數四、filter()函數五、三大函數總結 本篇文章內容有Python中的匿名函數和map()函數、reduce()函數、filter()函數這三大封裝函數(遍歷處理),以及它們的使用案例。 文末是對這幾個函數用法功能的比較。 一、匿名函數

文章目錄

      • 一、匿名函數
      • 二、map()函數
      • 三、reduce()函數
      • 四、filter()函數
      • 五、三大函數總結

本篇文章內容有Python中的匿名函數和map()函數、reduce()函數、filter()函數這三大封裝函數(遍歷處理),以及它們的使用案例。 文末是對這幾個函數用法功能的比較。

一、匿名函數

該函數的用法類似于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
鳴人——羊村村長

二、map()函數

  1. 函數嵌套——把函數當做一個參數傳給另外一個函數
def foo(n):print(n)
def bar(name):print("my name is %s"%name)  #使用了百分號類的字符串拼接
foo(bar('小沈陽'))
#會先傳入“小沈陽”執行bar(),并輸出,
#再將bar()的返回值,即None傳入foo()中,并輸出形參

運行結果:
my name is 小沈陽
None

  1. 低級函數封裝
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]

  1. 高級封裝函數——最接近map()函數的本質
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]

  1. map()函數+匿名函數——終極用法
    傳入一個函數和一個列表到封裝函數中,好處是可以根據需求傳入各種定義的函數,將列表中所有的元素做處理
#第一個參數是一個函數,第二個參數是一個可迭代對象(可循環的)
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()函數是做批量處理用的

三、reduce()函數

  1. 初級reduce()——簡單的單函數
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

  1. 進階reduce()——函數嵌套
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

  1. reduce()函數——終極reduce
    注意:該函數使用前需要從functools庫中導入。
    即:from functools import reduce
from functools import reduce
num = [1,2,3,4,5,100]
print(reduce(lambda x,y:x*y, num, 2))
#reduce函數必須導入functools模塊,且第三個參數是非必須參數,為初始值

運行結果:
24000
很明顯,reduce()函數做整合用的。

四、filter()函數

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函數整合出新元素

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/111672.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息