@Author:By Runsen
@Date:2019年07月13日
之前寫的,最近決定把之前的回顧,寫詳細。
1。1 lambda 函式
1。2 函數語言程式設計
2。1 map
2。2 filter
2。3 reduce
3。1 如何根據值來排序
1、匿名函式
匿名函式不需要顯示地定義函式名,使用【lambda + 引數 +表示式】的方式
1。1 lambda 函式
lambda 函式的形式
lambda argument1, argument2,。。。 argumentN : expression
套入函式,使用lambda
square = lambda x: x**2square(3)9
lambda 返回的一個函式物件
注意:lambda 和def 的區別
lambda 是一個表示式,def 是一個語句
[(lambda x: x*x)(x) for x in range(10)]# 輸出[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
lambda 可以用作函式的引數,def 不能
l = [(1, 20), (3, 0), (9, 10), (2, -1)]
l。sort(key=lambda x: x[1]) # 按列表中元祖的第二個元素排序
print(l)# 輸出[(2, -1), (3, 0), (9, 10), (1, 20)]
lambda 是隻有一行的簡單表示式
squared = map(lambda x: x**2, [1, 2, 3, 4, 5])
如果不用lambda ,你用def就需要多寫好多行
def square(x):
return x**2
squared = map(square, [1, 2, 3, 4, 5])
在tkinter 中實現的簡單功能
主要你按壓就出現being pressed
你用def就是下面的樣子
使用def 要寫好多行,多定義一個函式
1。2 函數語言程式設計
函數語言程式設計是指程式碼每一塊都是不可變的,都是由純函式的組成
這裡的純函式 值函式本身相互獨立,對於相同的輸入都有相同的輸出
傳入一個列表將列表的元素變為原來的2倍
純函式的形式,應該在函數里面定義一個新的列表
2、其他函式
對於純函式python 提供了幾個函式
2。1 map
map 函式的形式
( function ,iterable )
第一個引數是函式的物件,第二個是一個可迭代物件
l = [1, 2, 3, 4, 5]new_list = map(lambda x: x * 2, l) list(new_list)# [2, 4, 6, 8, 10]
2。2 filter
filter通常對一個集合做g過濾的操作
l = [1, 2, 3, 4, 5]new_list = filter(lambda x: x % 2 == 0, l)list(new_list) # [2, 4]
2。3 reduce
reduce通常對一個集合做累積的操作
import functoolsl = [1, 2, 3, 4, 5]product = functools。reduce(lambda x, y: x * y, l) product# 1*2*3*4*5 = 120
3、思考題
3。1 如何根據值來排序
d = {‘mike’: 10, ‘lucy’: 2, ‘ben’: 30}
sorted(d。items(),key=lambda x:x[1],reverse=True)
注意 reduce在3中已經放進functools模組中了