python學習-day16:函數範圍、匿名函數、函數式編程、map、filter、reduce函數、內建函數r

來源:互聯網
上載者:User

標籤:rar   實現   記憶體   add   邏輯運算   test   upper   程式   cti   

一、範圍

範圍在定義函數時就已經固定住了,不會隨著調用位置的改變而改變

 

 

二、匿名函數

lambda:正常和其他函數進行配合使用。正常無需把匿名函數賦值給一個變數。

f=lambda x:x*xprint(f)           #列印指向該函數的記憶體位址print(f(5))       #記憶體位址(5) 調用運行該函數def cala(x):    y=x*x    return yz=cala(5)print(z)>>><function <lambda> at 0x10137d950>25100
#name=alex  #修改為:name=alex_sbf=lambda x:x+‘_sb‘print(f(‘alex‘))
f=lambda x,y,z=10:x+y+z  #可以存在預設數值print(f(3,3))>>>>16
f=lambda x,y,z=10:(x+1,y+1,z+1)  #如果需要對函數進行返回多個值,需要加括弧print(f(3,3))>>>(4, 4, 11)

 

#這段代碼def calc(n):    return n**nprint(calc(10)) #換成匿名函數calc = lambda n:n**nprint(calc(10))

 

 

三、函數式編程

 

先過

 

四、map函數:

 

  通過為了靈活實現多個字串的多種變化,進行兩次函數化的程式設計:

def pf(x):    return x**2def add_one(x):    return x+1def reduce_one(x):    return x-1def num_pin(fanfa,array):    new_num=[]    for i in array:        new_num.append(fanfa(i))    return new_numnew_num=num_pin(pf,num_1)print(new_num)new_num2=num_pin(add_one,num_1)print(new_num2)[1, 4, 100, 25, 9, 49][2, 3, 11, 6, 4, 8]
num=[13,46,5,46,5,7]def pf(x):    return x*xdef jisuan(fuan,array):    new_num=[]    for i in array:        new_num.append(fuan(i))    return new_numprint(jisuan(pf,num))f=lambda x:x*xprint(f)print(lambda x:x*x)print(jisuan(f,num))print(jisuan(lambda x:x*x,num))>>>>[169, 2116, 25, 2116, 25, 49]<function <lambda> at 0x101b7da60><function <lambda> at 0x101b7dae8>[169, 2116, 25, 2116, 25, 49][169, 2116, 25, 2116, 25, 49]

 

#終極版本def map_test(func,array): #func=lambda x:x+1    arrary=[1,2,10,5,3,7]    ret=[]    for i in array:        res=func(i) #add_one(i)        ret.append(res)    return retprint(map_test(lambda x:x+1,num_l))res=map(lambda x:x+1,num_l)print(‘內建函數map,處理結果‘,res)# for i in res:#     print(i)print(list(res))print(‘傳的是有名函數‘,list(map(reduce_one,num_l)))msg=‘linhaifeng‘print(list(map(lambda x:x.upper(),msg)))>>>[2, 3, 11, 6, 4, 8]內建函數map,處理結果 <map object at 0x101b862e8>[2, 3, 11, 6, 4, 8]傳的是有名函數 [0, 1, 9, 4, 2, 6][‘L‘, ‘I‘, ‘N‘, ‘H‘, ‘A‘, ‘I‘, ‘F‘, ‘E‘, ‘N‘, ‘G‘]

 

總結:

對可迭代對象的每一個元素進行邏輯運算:可以使用匿名函數:lambda或者自訂函數

①、print(list(map(lambda x:x**2,num)))②、num=[13,46,5,46,5,7]def pf(x):    return x*xprint(list(map(pf,num)))

 



四、filter函數
dsdsdsdsdsds
dsd

python學習-day16:函數範圍、匿名函數、函數式編程、map、filter、reduce函數、內建函數r

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.