欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【python学习笔记】列表常用的内置函数

程序员文章站 2022-05-29 21:58:58
...

对于列表来讲,有三个内置函数非常有用: 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