1. 程式人生 > >python學習筆記:lambda,filter,reduce,map;

python學習筆記:lambda,filter,reduce,map;

一·python中的lambda函式:

lambda函式的用法:

>>>r = lambda x : x + x
>>>r(5)
10
>>>r('s')
'ss'

在lambda的前面要有一個變數名,類似於函式名。類似於上圖的r;

r = lambda x :x + x中:

下面的兩個函式等同:

def r(x):
    return x + x
r = lambda x : x + x

二·python中的filter函式:

filter函式的用法:

def even(x):
    return x % 2 == 0
list_num = list(filter(even,range(1,11)))
print(list_num)

其輸出結果為【2,4,6,8,10】

所以我認為filter函式是過濾函式,將第二個引數傳入第一個引數的函式中,將結果為true的留下來,python3中形成一個類,python2則是一個列表,因此在python3需要用list將其轉化成列表。

當然上述函式還可以用lambda函式變成更簡潔的形式:

list_num = list(filter(lambda x: x % 2 == 0,range(1,11)))
print(list_num)

效果相同。

三·python中的reduce函式:

reduce函式就是將第二個引數中的第一個和第二個傳入reduce第一個引數的函式,將返回的引數當作第三個資料再與reduce引數中的第二個引數的第三個一起傳入函式,以此類推直到最後。

可能說起來很麻煩,舉個例子:

from functools import reduce
sum = reduce(lambda x,y: x + y, range(1,8))
print(sum)

注意:

1、python3中的reduce函式已經不在是內建函數了,如果想要使用需要在最開始加上一句:

from functools import reduce

將functools中的reduce函式引入。

2、range(1,8)是指1到7,可以在python3中使用

list(range(1,8))

可以得到一個1到7的列表。

四·python中的map函式:

map函式是將第二個函式分別傳入第一個引數的函式中,然後將其返回結果一一對應形成新的列表。

舉例子:

list(map(lambda x:x + x,range(1,11)))

python3中仍舊是將map函式的返回值作為一個類,因此需要使用list函式將其變成列表。

上例的返回結果是[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

本人屬於計算機方面的小學生,部落格就是學習的筆記,如果發現我的文章有什麼不合理的地方或者錯誤的地方還望各路大神不吝賜教,再次表示萬分感謝!!!