【python学习笔记】列表常用的内置函数
对于列表来讲,有三个内置函数非常有用: filter(),map() 以及 reduce()。
1、filter(function, sequence)
filter(function, sequence)
返回一个sequence
(序列),包括了给定序列中所有调用function(item)
后返回值为true
的元素(如果可能的话,会返回相同的类型)。如果该 序列 (sequence
)是一个str
,unicode
或者tuple
,返回值必定是同一类型,否则,它总是list
。例如,以下程序可以计算一个被 3 或者 5 整除的序列:
>>> def f(x): return x % 3 == 0 or x % 5 == 0
...
>>> filter(f, range(2, 25))
[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24]
这个方法是用于过滤序列的,即其会过滤传入的第二个参数,将其中不符合函数f
的丢掉,剩下的组成一个新的list并返回;
2、map(function, sequence)
map(function, sequence)
为每一个元素依次调用 function(item) 并将返回值组成一个链表返回,这个和filter
不同之处在于,filter
是过滤,而map
方法是计算,将参数sequence
里的每一个元素作为参数传入fuction
中,并将fuction
返回的结果组成一个list并返回,范例如下:
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
这里可以有多个序列传入,即如果fuction
有多个参数要传的话,是需要传递多个sequence
的,例如:
>>> seq = range(8)
>>> def add(x, y): return x+y
...
>>> map(add, seq, seq)
[0, 2, 4, 6, 8, 10, 12, 14]
3、reduce(function, sequence)
reduce(function, sequence)
返回一个单值,它是这样构造的:首先以序列的前两个元素调用函数function
,再以返回值和第三个参数调用,依次执行下去。
这个方法和map
方法有相似的地方在于都是将sequence
作为参数传入fuction
;
例如,以下程序计算 1 到 10 的整数之和:
>>> def add(x,y): return x+y
...
>>> reduce(add, range(1, 11))
55
如果序列中只有一个元素,就返回它,如果序列是空的,就抛出一个异常。
可以传入第三个参数作为初始值。如果序列是空的,就返回初始值,否则函数会先接收初始值和序列的第一个元素,然后是返回值和下一个元素,依此类推。例如:
>>> def sum(seq):
... def add(x,y): return x+y
... return reduce(add, seq, 0)
...
>>> sum(range(1, 11))
55
>>> sum([])
0
http://www.runoob.com/manual/pythontutorial/docs/html/datastructures.html#tut-morelists
上一篇: 天气预报的APL
下一篇: ssm 多表一对一查询