lambda
1,用于处理简单逻辑
2,自动返回数据(return)
单参数
>>> func2 = lambda a: a+1
>>> result = func2(1000)
>>> print result
1001
多参数
>>> func3 = lambda a,b: a+b
>>> result = func3(1000,888)
>>> result
1888
map
我们先看map。map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回。
>>> def f(x):
... return x*x
...
>>> map(f,[1,2,3])
[1, 4, 9]
也可以传递两个列表
>>> l1
[11, 22, 33]
>>> l2
[11, 22, 33]
>>> def func2(a1,a2):
... return a1 + a2
...
>>> map (func2,l1,l2)
[22, 44, 66]
filter
和map()
类似,filter()
也接收一个函数和一个序列。和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素。
例如,在一个list中,删掉偶数,只保留奇数,可以这么写:
>>> def is_odd(n): ... return n % 2 == 1 ... >>> filter(is_odd,[1,2,4,5,6,9,10,15]) [1, 5, 9, 15]
reduce
对于序列内的所有元素进行累计操作
>>> li = [11,22,33] >>> result = reduce(lambda arg1,arg2:arg1 + arg2,li) >>> print result 66
yield
用来记住上一次操作,下次再执行时继续执行
函数内,ruturen,函数执行完毕 把return换成yield
vim day4-6.py
#!/usr/bin/python # -*- coding:utf-8 -*- def func1(): return 1 print func1()
执行返回为1
修改代码
#!/usr/bin/python # -*- coding:utf-8 -*- def func1(): yield 1 yield 2 yield 4 print func1()
返回为
<generator object func1 at 0x7fc4b1ab0780>
修改代码
#!/usr/bin/python # -*- coding:utf-8 -*- def func1(): yield 1 yield 2 yield 4 for i in func1(): print i
返回为1 2 4
使用了迭代返回
使用yield模拟xrange功能
vim day4-7.py
#!/usr/bin/python # -*- coding:utf-8 -*- def mrange(arg): seed = 0 while seed <= arg-1: seed = seed + 1 yield seed - 1 for i in mrange(10): print i
reduce的基数概念
li=[1,2,3,4,5,6,7,8,9,10]
>>> result = reduce(lambda arg1,arg2:arg1 + arg2,li )
>>> print result
55
>>> result = reduce(lambda arg1,arg2:arg1 + arg2,li,1000 )
>>> print result
1055
小结
map 所有元素操作
filter 过滤,获取指定元素计划
reduce累积
装饰器
装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或者类,使用装饰器可以在函数执行前执行后添加相应操作