Python之lambda表达式和内置函数
lambda表達式其實就是簡化的函數表達式。
它只用于處理簡單邏輯,
它會自動return數據
通常定義一個函數,按照以下形式:
| 1 2 3 4 5 | def??func(arg): ??????return?arg?+1 result?=?func(100) print?result 101 |
以上函數用lambda表達式可以這么寫:
| 1 2 3 | func2?=?lambda?a:?a+1 result?=?func2(100) print?result |
在lambda表達式中,func2 相當于函數表達式中的func,即函數的名稱
a相當于函數表達式中的arg,即函數的參數。
冒號后面的a+1,相當于函數表達式中的返回結果,只不過在lambda表達式中不再用return來聲明了。
之前的文檔中介紹過,函數可以添加多個參數,,lambda表達式也可以
例如:
| 1 2 3 4 | func3?=?lambda?a,b:?a?+?b result?=?func3(100,200) print?result 300 |
Python內置函數
map方法:
map方法會遍歷整個序列(包括列表和元組),并對每一個元素進行相應的操作。
例如:有一個列表,將列表中的每一個元素加10。可以用map函數操作
li?=?[,,] func1(arg):arg?+??=?(func1,li)map內部原理其實是,
?=?[] I?li:.append(func1(I))map函數可以接受多個序列作為參數:
[17, 30, 43]
注意,如果接受多個序列作為參數,則每一個序列的元素個數必須相等。
上面的例子用lambda表達式,這樣寫
| 1 2 3 | l1?=?[,,] l2?=?[,,] l3?=?[,,] |
print map(lambda a1,a2,a3:a1+a2+a3,l1,l2,l3)
filter函數:
filter會遍歷序列中的每一個元素,按條件對元素進行過濾,其實內部原理就是按照條件進行計算,計算結果為True的元素不過濾,計算結果為False,則過過濾
例如:
例1:
| 1 2 3 | >>>?li?=?[11,22,'',False,0] >>>?print?filter(None,li) [11,?22] |
上面的例子中,None表示過濾掉布爾值為假的元素。0,False,空字符串都是布爾值都是假
?=?[,,,] func(a):a>(func,)[44,55]
這里就是遍歷l1這個列表,每一個元素通過函數func計算,大于33的則返回True,否則返回False。返回False則被過濾掉了。
reduce函數:
?接受一個序列,遍歷序列中的元素,然后進行一系列的計算,得到一個結果。
reduce是將給出的元素按照方法進行計算,至少要接受兩個元素。
例如計算1+2+3+4+5的和
reduce的原理是:計算1+2得到a 然后計算a+3,得到b,再計算b+4.依次類推
li?=[,,,,]=?(arg1,arg2:arg1+arg2,li)本文轉自 曾哥最愛 51CTO博客,原文鏈接:http://blog.51cto.com/zengestudy/1826950,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Python之lambda表达式和内置函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈谈Silverlight 2中的视觉状
- 下一篇: [Linux实用工具]munin-nod