map()傳入的第一個(gè)參數(shù)是f续崖,即函數(shù)對(duì)象本身敲街。由于結(jié)果r是一個(gè)Iterator,Iterator是惰性序列严望,因此通過list()函數(shù)讓它把整個(gè)序列都計(jì)算出來并返回一個(gè)list多艇。
map(a,b)
a 是一個(gè)函數(shù)的函數(shù)名
b 是一個(gè)Iterable
返回一個(gè)Iterator
z = map(a,[x1,x2,x3,x4])
next(z) = a(x1)
next(z) = a(x2)
next(z) = a(x3)
next(z) = a(x4)
reduce把一個(gè)函數(shù)作用在一個(gè)序列[x1, x2, x3, ...]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù)著蟹,reduce把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
filter()也接收一個(gè)函數(shù)和一個(gè)序列墩蔓。filter()把傳入的函數(shù)依次作用于每個(gè)元素梢莽,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 結(jié)果: [1, 5, 9, 15]
一個(gè)函數(shù)可以返回一個(gè)計(jì)算結(jié)果奸披,也可以返回一個(gè)函數(shù)昏名。
返回一個(gè)函數(shù)時(shí),牢記該函數(shù)并未執(zhí)行阵面,返回函數(shù)中不要引用任何可能會(huì)變化的變量轻局。
lambda 匿名函數(shù)關(guān)鍵字
在Python中,對(duì)匿名函數(shù)提供了有限支持样刷。還是以map()函數(shù)為例仑扑,計(jì)算 f(x)=x2 時(shí),除了定義一個(gè)f(x)的函數(shù)外置鼻,還可以直接傳入匿名函數(shù)
>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]
匿名函數(shù)有個(gè)限制镇饮,就是只能有一個(gè)表達(dá)式,不寫return箕母,返回值就是該表達(dá)式的結(jié)果储藐。
函數(shù)原型
聲明:s為字符串,rm為要?jiǎng)h除的字符序列
s.strip(rm) 刪除s字符串中開頭嘶是、結(jié)尾處钙勃,位于 rm刪除序列的字符
s.lstrip(rm) 刪除s字符串中開頭處,位于 rm刪除序列的字符
s.rstrip(rm) 刪除s字符串中結(jié)尾處聂喇,位于 rm刪除序列的字符
注意:
- 當(dāng)rm為空時(shí)辖源,默認(rèn)刪除空白符(包括'\n', '\r', '\t', ' ')
例如:
復(fù)制代碼代碼如下:
a = ' 123'>>> a.strip()'123'>>> a='\t\tabc''abc'>>> a = 'sdff\r\n'>>> a.strip()'sdff'
2.這里的rm刪除序列是只要邊(開頭或結(jié)尾)上的字符在刪除序列內(nèi),就刪除掉希太。
例如 :
復(fù)制代碼代碼如下:
a = '123abc'>>> a.strip('21')'3abc' 結(jié)果是一樣的>>> a.strip('12')'3abc'