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)