1. map(function,sequence)python
map()
函數接收兩個參數,一個是函數,一個是序列,map
將傳入的函數依次做用到序列的每一個元素,並把結果做爲新的list返回函數
>>> map(abs, [-1,2,0,-9]) [1, 2, 0, 9] >>> map(str, (1,2,3)) ['1', '2', '3'] >>>
2. reducespa
reduce把一個函數做用在一個序列[x1, x2, x3...]上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素作累積計算,其效果就是:code
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
>>> def fn(x, y): ... return x * 10 + y ... >>> reduce(fn, [1, 3, 5, 7, 9]) 13579 >>>
3. filter對象
filter()
也接收一個函數和一個序列。和map()
不一樣的時,filter()
把傳入的函數依次做用於每一個元素,而後根據返回值是True
仍是False
決定保留仍是丟棄該元素。blog
def test(x): if x%3 == 0: return True else: return False print filter(test, [2,3,4,6])
4. sorted排序
Python list內置sort()方法用來排序, 可是list.sort()方法僅被定義在list中,只能做用於list。io
而sorted()方法就是全局的,它對任何可迭代的序列排序生成新的序列。function
>>> a=[9,7,0,3,5,2] >>> id(a) 48400392L >>> a.sort() >>> a [0, 2, 3, 5, 7, 9] >>> id(a) 48400392L >>> >>> a=[9,7,0,3,5,2] >>> sorted(a) [0, 2, 3, 5, 7, 9] >>> a [9, 7, 0, 3, 5, 2] >>>
從上面能夠看出使用list.sort()方法來排序,此時list自己將被修改,而用sorted()方法會返回一個新的list,不影響原先list。class
5. lambda
關鍵字lambda
表示匿名函數。
lambda會建立一個函數對象,但不會把這個函數對象賦給一個變量,而def則會把函數對象賦值給一個變量。
另外lambda只是一個表達式,而def則是一個語句。簡單的說在def中,用return能夠返回的也能夠放在lambda後面,不能用return返回的也不能定義在python lambda後面。所以,像if或for這種語句就不能用於lambda中,lambda通常只用來定義簡單的函數。
>>> f = lambda x:x*2
>>> f(3)
6.偏函數
經過functools.partial
幫助咱們建立一個偏函數,做用就是把一個函數的某些參數給固定住(也就是設置默認值)返回一個新的函數,
調用這個新函數會更簡單,並且不用更改原始函數。
import functools def test(x,y): print x+y test2=functools.partial(test,y=2) test2(3)
這裏函數test定義了兩個參數,若是某種狀況下y一直是2的狀況,那麼咱們能夠從新生成一個新的函數test2將參數y給固定,
而後調用test2就相對簡單一點,並且沒有更改原先的函數。 固然也能夠更改原先函數設置默認值便可,以下:
def test(x, y=2): print x+y test(4)