遞歸,匿名函數

1、三元運算符函數

三元運算符也稱三目運算符,就是if .....else.....語法糖spa

前提:if 和 else 只有一條語句遞歸

例:a = 20it

       b = 30容器

       res = a if a > b else b     #求最大值匿名函數

三元運算符的結果不必定要與條件直接有關係基礎

2、推導式:列表(元組)與字典的轉換語法糖變量

一、列表(元組)推導式lambda

dic = {'a':1,'b':2,'c':3}循環

res = [(k, v) for k , v in dic .items()]

print(res)                                         #[('a',1),('b',2),('c',3)]

元組直接在獲得的列表的基礎上tuple轉一下就能夠了

二、字典推導式

l = [('a',1),('b',2),('c',3)] 

res = {k: v for k ,v in l}

print res                                          #dic = {'a':1,'b':2,'c':3}

案例:

range 能夠被推導爲列表

res_ls = [arg for arg in range(10)]

print(res)                                          # [0,1,2,3,4,5,6,7,8,9]

迭代出可解壓爲單列容器的就能夠推導出字典

res_dic = {v: k for k, v in enumrate('abc')}

print(res_dic)                                   #{'a': 0 , 'b' : 1 , 'c' : 2}

三、列表推導式格式:

[k for k in iter if 篩選條件]

3、遞歸:回溯與遞推

回溯:詢問答案的過程

遞推:推出答案的過程

一、前提:

             回溯到一個有具體結果的值,開始遞推

             回溯與遞推的條件要有規律

二、遞歸本質:函數的自我調用

def a():

      global count

       count += 1

       if count > 50:

              return 

       a()

a()                                 #本身調本身

 

 

def b():

      c()

def c():

      d()

def d():

      b()

b()                                #間接調本身,一旦造成循環調用,就產生了遞歸

4、匿名函數:沒有名字的函數,沒有函數體,只有一個返回值

語法:lambda  參數列表  一個返回值表達式

           lambda x,y : x + y

應用場景:

          一、匿名函數函數地址能夠被一個變量接受,該變量就能夠做爲函數名來使用,但就違背了匿名的初衷

           二、結合內置函數來使用:內置函數某些參數須要一個函數地址,能夠賦值一個有名函數名,也能夠直接賦值匿名函數

相關文章
相關標籤/搜索