[ python ] 匿名函數和高階函數

匿名函數

描述:
    關鍵字 lambda 定義的函數
    
語法:python

    函數名 = lambda 參數:返回值

 



返回值:
    函數返回結果值函數

 

實例:spa

一個參數的匿名函數:code

func = lambda x: x*x

f = func(2)
print(f)

# 執行結果:
# 4

 多個參數的匿名函數:對象

func = lambda x, y: x+y

f = func(1, 2)
print(f)

# 執行結果:
# 3

 

高階函數

(1)mapblog

描述:
    map()會根據提供的函數對指定序列作映射。
    
    第一個參數 function 以參數序列中的每個元素調用 function 函數,返回包含每次 function 函數的返回值的新列表
    
語法:排序

map(function, iterable, ...)

 



參數:
    function -- 函數
    iterable -- 一個或多個序列
    
返回值:
    python 2.X 返回列表
    python 3.X 返回迭代器ip

 

實例:it

 

 提供兩個列表,對相同位置的列表數據進行相加io

 

 (2)reduce

描述:
    對參數序列中的元素進行累積,效果以下:
    
    reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    
語法:

reduce(function, iterable[, initializer])

 



參數:
    function -- 函數,有兩個參數
    iterable -- 可迭代對象
    initializer -- 可選,初始參數
    
返回值:
    返回函數計算結果

 

實例:

 

 結合匿名函數+高階函數的使用:

from functools import reduce

r = reduce(lambda x, y: x + y, [1,2,3,4,5])
print(r)

# 執行結果:
# 15

 

(3)filter

描述:
    python內建的 filter() 函數用於過濾序列
    
語法:
    filter()接收一個函數和一個序列,filter()把傳入的函數依次做用於每一個元素,而後根據返回值是 True 仍是 False 決定保留仍是丟棄該元素

 

實例:

去掉list中的偶數,只保留奇數

l = [1,2,3,4,5,6,7, 8, 9]
def is_odd(n):
    return n % 2 == 1


f = filter(is_odd, l)
print(list(f))

# 執行結果:
# [1, 3, 5, 7, 9]

 

 

練習:

回數是指從左到右讀和從右到左讀都是同樣的數,例如:12321,909  請利用 filter() 篩選出回數

def is_palindrome(n):
    hx = str(n) 	# 首先將參數轉換爲str類型
    if hx == hx[::-1]:	# 若是從左到右,從右到左都相等,則返回回數
        return hx

 

(4)sorted

描述:
    sorted() 函數對全部可迭代的對象進行排序操做。
    
sort 和 sorted 區別:
    sort 是應用在 list 上的方法,sorted能夠對全部可迭代的對象進行排序操做。
    list 的 sort 方法返回是對已經存在的列表進行操做,無返回值,而內建函數sorted 方法返回的是一個新的list,而不是在原來的基礎上進行的操做
    
語法:

sorted(iterable[, cmp[, key[, reverse]]])

 


    
    key: 主要用來進行比較的元素,只有一個參數,具體的函數的參數就是取自與可迭代對象中,指定可迭代對象中的一個元素來進行排序。
    reverse:默認排序規則是升序排序, reverse=True 則降序排序
    
返回值:
    返回從新排序的列表

 

實例:

比較數字

In [1]: sorted([36, 5, -12, 9, -21])
Out[1]: [-21, -12, 5, 9, 36]

 

定義key函數,使用絕對值進行排序

In [2]: sorted([36, 5, -12, 9, -21], key=abs)
Out[2]: [5, 9, -12, -21, 36]

 

定義key函數,使用絕對值進行降序排序

In [3]: sorted([36, 5, -12, 9, -21], key=abs, reverse=True)
Out[3]: [36, -21, -12, 9, 5]

 

(5)zip

描述:
    zip()函數用於將可迭代的對象做爲參數,將對象中對應的元素打包成一個個元組,而後返回由這些元組組成的列表
    若是各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同,利用 * 號操做符,能夠將元組解壓爲列表。

語法:

zip([iterable, ...])

 


    
    iterable: 一個或多個迭代器
    
返回值:
    返回元組列表
    
實例:

In [10]: a = [1,2,3]

In [11]:  b = [4,5,6]

In [12]: list(zip(a, b ))
Out[12]: [(1, 4), (2, 5), (3, 6)]


#以最短的列表做爲組合的結尾

In [13]: a = [1,2,3,4,5]

In [14]: b = [1,2]

In [15]: list(zip(a, b ))
Out[15]: [(1, 1), (2, 2)]
相關文章
相關標籤/搜索