人生苦短 我用python
開始愉快的享(代)受(碼)時(shí)間:
-
Lambda
- 匿名函數(shù)可作為參數(shù)傳遞
- 匿名函數(shù)能接收任何數(shù)量的參數(shù)但只能返回一個(gè)表達(dá)式的值
形式: lambda: 參數(shù)1,參數(shù)2... : 表達(dá)式
一般形式:
result = lambda x,y : x+y
函數(shù)作為參數(shù)傳遞形式:
def calculate(a, b, method):
print("
收到的數(shù)字為
", a, b)
return method(a, b)
print(calculate(10, 20, lambda a,b:a+b))
-
map
- 對(duì)序列中的item 依次執(zhí)行function(item)操作
- map(fun, 序列)
list1 = [1, 2, 2, 3, 4, 89]
resutl = map(str, list1) # 將列表中的元素轉(zhuǎn)為str類型
print(resutl) # <map object at 0x022043F0>
print(list(resutl)) # ['1', '2', '2', '3', '4', '89']
或者:
list1 = [1, 2, 2, 3, 4, 89]
resutl1 = map(lambda x: str(x), list1) # 用匿名函數(shù)表示
print(list(resutl1)) # ['1', '2', '2', '3', '4', '89']
-
reduce
- 對(duì)序列中的item 順序迭代調(diào)用函數(shù)操作, 函數(shù)必須要有2個(gè)參數(shù),結(jié)果返回一個(gè)值 (例如:遞歸求和)
- 在python3中 reduce不是內(nèi)建函數(shù) 需要引入 from funtools import reduce
- reduce(fun,序列)
from functools import reduce
list1 = [1, 2, 2, 3, 4, 89]
result = reduce(lambda x, y: x+y, list1) # 結(jié)果: 101 邏輯: 1+2+3+4+5...
print(result)
- filter 過濾
- 依次對(duì)序列中的item調(diào)用函數(shù)操作 進(jìn)行判斷 將符合條件的item保留 組成序列返回
- filter(fun,序列)
list1 = [1, 2, 2, 3, 4, 89]
result = filter(lambda x: x % 2 == 0, list1) # 結(jié)果類型<filter object at 0x021DB090>
print(list(result)) # 強(qiáng)轉(zhuǎn)類型后結(jié)果: [2, 2, 4]
-
sorted 排序
參考 https://www.cnblogs.com/whaben/p/6495702.html
- 接收一個(gè)比較函數(shù)來實(shí)現(xiàn)自定義排序 函數(shù)規(guī)定按照什么來進(jìn)行排序
- 默認(rèn)按照小于運(yùn)算符排序
- sorted(序列,key=fun, reserve=false(默認(rèn)false,是否反轉(zhuǎn)))
- key參數(shù)的值為一個(gè)函數(shù),此函數(shù)只有一個(gè)參數(shù)且返回一個(gè)值用來進(jìn)行比較潘拱。這個(gè)技術(shù)是快速的因?yàn)閗ey指定的函數(shù)將準(zhǔn)確地對(duì)每個(gè)元素調(diào)用秉继。
- list對(duì)象本身可以調(diào)用sort()方法實(shí)現(xiàn)排序 但沒有返回值(none)
默認(rèn)排序
print(sorted(list1)) # [1, 2, 2, 3, 4, 7, 8, 54, 89]
指定排序:
student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
sorted(student_tuples, key=lambda student: student[2]) # 按照年齡排序 結(jié)果 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]