什麼是lamdba?
lowercase = lambda x: x.lower()
等同於
def lowercase(x):
return x.lower()
適用情境
較簡單的函數,如果函數比較複雜難以理解,例如:
total = reduce(lambda a, b: (0, a[1] + b[1]), items)[1]
叫易於理解的寫法
total = 0
for a, b in items:
total += b
Fredrik Lundh建議將lamdba轉成一般函數的作法:
# 寫一個lambda函數
# 為這個lambda函數寫一個註釋
# 轉換為def敘述
# 移除註釋
範例
reduce函數
將一個序列做累計的動作,例如:
reduce(lambda x,y: x+y,[1,2,3,4,5])
>>> 15
reduce(lambda x,y: x*y,[1,2,3,4,5])
>>> 120
map對list中的每個元素做動
例如:
keyList = range(32, 256)
>>> [32,...]
valueList = map(lambda x:x+8, keyList)
>>> [40,...]
re.compile
compile(pattern, flags=0)
Compile a regular expression pattern, returning a pattern object.
例如:
import re
p=re.compile('I have (.*)')
print p.match('I have an apple')
>>>
print p.match('Okay')
>>> None
random
>>> random.randint(1, 10) #取一到十間隨機數
9
沒有留言:
張貼留言