自己在使用lambda函式的時候把自己整的頭大。特別是當lambda和內建函式用的時候。自己都想打人,哈哈,也不會真打了。現在總結下自己在遇到lambda和內建函式結合使用的情況。
目錄
lambda
map函式
reduc
filter
sorted
zip()
lamdba 在python是匿名函式,匿名函式是匿名的嗎?可以有名字,匿數可嗎?以實現簡單的函式的功能,如果太複雜,個人不建議使用lambda,因為這樣寫的太負載,**的可讀行不好。
lamdba函式的表示式:
函式名 = lambda 引數:返回值
注意:匿名函式的引數可以有多個。
我們用匿名函式來寫乙個函式
func = lambda x:x
print(func(10))
10
我們會發現實際匿名函式是有名字的,上面構建的匿名函式的ming名字是func
匿名函式的呼叫可普通的函式的呼叫方式是沒有區別的,都是函式名加(),通過以下的例子說明:
def func1(a):
return a
print(func1(1))
1func = lambda x:x
print(func(1))
1
多個引數的匿名函式:
func = lambda x,y:x+y
print(func(1,2))
3
以上是簡單的匿名函式的使用,哈哈,看到這裡,是不是,感覺挺簡單的。匿名函式也不過如此。
可是當匿名函式可一些內部函式結合使用的時候,就讓人頭疼了。
來說下他的小夥伴吧!!!
當lamdba可map函式一起使用的時候:
對映函式
語法:map(函式名,可迭代物件) 可以對可迭代物件中的每乙個元素進對映,分別取執行function
li = [11, 22, 33]
new_list = map(lambda a: a + 100, li)
print(list(new_list))
[111, 122, 133]
當然,map還可以完成多個陣列的相加
li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)
print (list(new_list))
[12, 24, 36]
語法:reduce(函式名,可迭代物件) # 這兩個引數必須都要有,缺乙個不行
from functools import reduce
l = [1,2,3,4]
l1 = reduce(lambda x,y:x+y,l)
print(l1)
10
看到結果是不是感到可神氣呢?
reduce的作用是先把列表中的前倆個元素取出計算出乙個值然後臨時儲存著, 接下來用這個臨時儲存的值和列表中第三個元素進行計算,求出乙個新的值將最開始 臨時儲存的值覆蓋掉,然後在用這個新的臨時值和列表中第四個元素計算.依次類推 注意:我們放進去的可迭代物件沒有更改 以上這個例子我們使用sum就可以完全的實現了.我現在有[1,2,3,4]想讓列表中的數變成1234,就要用到reduce了. 普通函式版
語法: filter(function,iterable
) 他可以根據條件對資料進行過濾
function: 用來篩選的函式,在filter中會自動的把iterable中的元素傳遞給function,然後根據function返回的true或者false來判斷是否保留此項資料
lst = [,
,, ]
ls = filter(lambda e: e['age'] > 16, lst)
print(list(ls))
[, ]
語法:sorted(iterable,key=none,reverse=false)
key: 排序規則(排序函式),在sorted內部會將可迭代物件中的每乙個元素傳遞給這個函式的引數.根據函式運算的結果進行排序
reverse :是否是倒敘,true 倒敘 false 正序
lst = ['天龍八部', '西遊記', '紅樓夢', '三國演義']
#將lst中的值按照長度排序
print(sorted(lst, key=lambda s: len(s)))
# ['西遊記', '紅樓夢', '天龍八部', '三國演義']
還有乙個內建函式,不和lamdba一起使用,但有時我對他挺迷的,就寫在這裡吧
函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元祖,
然後返回由這些元祖組成的內容,如果各個迭代器的元素個數不一致,則按照長度最短的返回
lst1 = [1,2,3]
lst2 = ['a','b','c','d']
lst3 = (11,12,13,14,15)
for i in zip(lst1,lst2,lst3):
print(i)
# 結果:
# (1, 'a', 11)
# (2, 'b', 12)
# (3, 'c', 13)
Python中lambda表示式
一 lambda表示式形式 lambda後面跟乙個或多個引數,緊跟乙個冒號,以後是乙個表示式。冒號前是引數,冒號後是返回值。lambda是乙個表示式而不是乙個語句。lambda表示式可以出現在python語法不允許def出現的地方。lambda表示式返回乙個值。二 與def的區別 lambda用來編...
python中Lambda表示式
lambda表示式 lambda 引數,引數,return 的表示式 def ds x return 2 x 1 print ds 3 7g lambda x 2 x 1 print g 3 7add lambda x,y x y print add 1,5 6 兩個bef 過濾器 filter 對...
Python中lambda表示式學習
lambda只是乙個表示式,函式體比def簡單很多。lambda的主體是乙個表示式,而不是乙個 塊。僅僅能在lambda表示式中封裝有限的邏輯進去。lambda表示式是起到乙個函式速寫的作用。允許在 內嵌入乙個函式的定義。如下例子 定義了乙個lambda表示式,求三個數的和。再看乙個例子 用lamb...