第十三天 函式 高階和匿名

2021-08-10 08:27:48 字數 3559 閱讀 3766

1、map()函式

map函式時python內建的乙個高階函式,它接受乙個函式f和乙個list,並把list的元素以此傳遞給函式f,然後返回乙個函式f處理完所有list元素的列表。

#map()函式,第乙個引數為自定義函式,第二個引數為乙個可迭代物件

2、reduce()函式

reduce()函式也是python內建的乙個高階函式。reduce()函式接收的引數和 map()類似,乙個函式 f,乙個list,但行為和 map()不同,reduce()傳入的函式 f 必須接收兩個引數,第一次呼叫是把list的前兩個元素傳遞給f,第二次呼叫時,就是把前兩個list元素的計算結果當成第乙個引數,list的第三個元素當成第二個引數,傳入f進行操作,以後以以此類推,並返回最終結果值。

#reduece函式

#傳入函式必須接受兩個引數,

#把可迭代物件的前兩個引數作為函式的實參,傳入到f函式中

#把每次f運算的結果作為第乙個實參,可迭代物件的下乙個元素作為另乙個實參

#以此類推,最終得到結果

print('################reduce###############')

deff

(x, y):

return (x+y)

print(reduce(f, [1, 2, 3, 4, 5], 10))

運算過程:

1, 計算a = f(1,2)的值為3

2, 計算b = f(a, 3)的值為6

3, 計算c = f(b, 4)的值為10

4, 計算d = f(c, 5)的值為15

5, 計算f(d, 10)的值為25

其實就是相當於1+2+3+4+5+10,最有的10是乙個預設值,及最終在執行一次。

3、filter()函式

filter英文單詞就是過濾的意思,filter()函式是 python 內建的另乙個有用的高階函式,filter()函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。

#filter函式

#每次把可迭代物件的元素傳入進去,如果返回為『true』,則保留該元素,如果反悔了『flase』,則不保留該元素

print('################filter###############')

a = [1, 2, 3, 4, 5]

defis_odd

(x):

return(x%2 == 1)

print (is_odd(5))

print(filter(is_odd, a))

解釋:

1, list的元素以此傳入到函式is_odd,

2, is_odd判斷每個元素是否符合條件,把符合條件的留下,不符合條件的捨棄

3, 把最終所有符合條件的元素組成乙個新的列表

4、匿名函式

顧名思義就是沒有名字的函式,那為什麼要設立匿名函式,他有什麼作用呢?

lambda 函式是一種快速定義單行的最小函式,可以用在任何需要函式的地方

常規版本:

def fun(x,y)

returnx*y

lambda版本:

r = lambda x,y:x

*yprint(r(2,3))

print(type(r))

結果:

6

#匿名函式

defsum

(x,y):

return x+y

m = lambda x, y: x + y#後面是返回的結果

5、sorted函式

sorted(…)

sorted(iterable, cmp=none, key=none, reverse=false) –> new sorted list

對字典進行排序:

按照value進行排序

mm = dict(a=1,b=10,c=3,d=9)

print sorted(mm.iteritems(), key = lambda d:d[1], reverse = true)

作用:返回乙個經過排序的列表。

第乙個引數是乙個iterable,返回值是乙個對iterable中元素進行排序後的列表(list)。

可選的引數有三個,cmp、key和reverse。

1)cmp指定乙個定製的比較函式,這個函式接收兩個引數(iterable的元素),如果第乙個引數小於第二個引數,返回乙個負數;如果第乙個引數等於第二個引數,返回零;如果第乙個引數大於第二個引數,返回乙個正數。預設值為none。

2)key指定乙個接收乙個引數的函式,這個函式用於從每個元素中提取乙個用於比較的關鍵字。預設值為none。

3)reverse是乙個布林值。如果設定為true,列表元素將被倒序排列。

key引數的值應該是乙個函式,這個函式接收乙個引數並且返回乙個用於比較的關鍵字。對複雜物件的比較通常是使用物件的切片作為關鍵字。

#sorted()#高階函式

#字典進行排序

mm = dict(a=1, c=20, d=9, b=10)

for i in mm:

print i

print('$$$$$$$$$$$$$$$$')

for key, value in mm.iteritems():#這裡是基於values的排序所需

print(key, value)

# print(dir(mm))

print(mm)

help(sorted) #檢視幫助

test = sorted(mm)#這是基於key的排序

iOS 高階 第十三天 0414

畫線 圓和圓弧的第二種方法 5中方法畫矩形 第二種畫圖形的方法 之前做的方法都是先把要畫的元素快取到圖形上下文cgconteextref中去,現在第二種方法也快取到cgpath中去.其實圖形上下文本質也是在內部建立乙個cgpath,圖形上下文把所有的元素先快取到cgpath中去,然後cgpath再快...

第十三天 練兵

問 昨天您講的很驚心動魄。這樣快節奏的配合確實非常完美,很羨慕。但要形成這樣的結果必須我們之間配合需要非常流暢,我們有什麼方法可以促成這樣的氛圍?答 練兵。如果一開始就進入業務系統功能的設計開發,業務組長對業務還沒有很深的吃透,這樣倉促上陣功能不但連上一版不如,而且為了補課,軟體不斷修改,什麼都亂了...

2020 7 18第十三天

1.學習了static關鍵字 靜態變數,靜態方法以及靜態模組 1 public class vardemo 9 1 public class staticblockdemo 5public staticblockdemo 8public static void main string args 12...