對於鍊錶來講,有三個內建函式非常有用: filter(),map() 以及 reduce()。
filter(function, sequence)
返回乙個 sequence(序列),包括了給定序列中所有呼叫function(item)
後返回值為 true 的元素(如果可能的話,會返回相同的型別)。如果該 序列 (sequence)是乙個 str,unicode 或者 tuple,返回值必定是同一型別,否則,它總是 list。例如,以下程式可以計算乙個被 3 和 5 整除的序列:
deff(x):return x % 3 == 0 and x % 5 ==0
print filter(f,range(2,100))
[15, 30, 45, 60, 75, 90]
map(function, sequence)
為每乙個元素依次呼叫function(item)
並將返回值組成乙個鍊錶返回。例如,以下程式輸出列表中的元素3次:
defword(x):return x*3words = ['1','2','3','4','5','6']
print map(word,words)
['111', '222', '333', '444', '555', '666']
可以傳入多個序列,函式也必須要有對應數量的引數,執行時會依次用各序列上對應的元素來呼叫函式(如果某些序列比其它的短,就用none
來代替)。如果把none
做為乙個函式傳入,則直接返回引數做為替代。例如:
seq1 = range(8)seq2 = range(9,17)
defadd(x,y):
return x+y
map(add,seq1,seq2)
[9, 11, 13, 15, 17, 19, 21, 23]
reduce(function, sequence)
返回乙個單值,它是這樣構造的:首先以序列的前兩個元素呼叫函式function,再以返回值和第三個引數呼叫,依次執行下去。例如,以下程式計算 1 到 10 的整數之和:
defadd(x,y):
return x+y
print reduce(add,range(1,11))
55
python中函式和函式式程式設計
def funx x,y,z print x,y,z funx 1,hello true 位置引數 funx z he y is x boy 關鍵字引數執行結果 f untitled2 venv scripts python.exe f untitled2 chinese demo1.py 1 he...
python中的函式式程式設計
python內建了map 和reduce 函式 map map 函式接收兩個引數,乙個是函式,乙個是iterable,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回 def f x return x x r map f,1,2,3,4,5 print list r ...
python 函式式 panda 函式式
摘要 一提到程式設計正規化,很容易聯想到宗教的虔誠,每種宗教所表達信條都有一定合理性,但如果一直只遵循一種教條,可能也被讓自己痛苦不堪,程式設計正規化也是如此。案例1 案例一,摘抄來自一企業培訓材料,主要 邏輯是列印每課成績,並找出學生非f級別課程統計平均分數 class coursegrade 摘...