有三个比较常用的List的操作: filter(), map()和reduce() 1。filter(function1, sequence1)会返回一个sequence。参数function1是一个返回布尔值的函数。filter会把sequence1中的每一个元素都代入function1中计算。那些能是function1的返回值为true的元素会组成一个新的sequence,并作为filter()的返回值。 2. map(function1, sequence1)会把seqence1的每一个元素都代入function1中,然后把返回值组成一个新的sequence作为map()的返回值。 3。reduce(function1, sequence1)这个函数的目的是用function1对sequence的前两个元素做运算,再把计算结果和第三个元素进行运算,直到所有的元素都被计入为止。如果只有一个元素,就返回这个元素,如果是个空的list,就会产生exception。 filter()的例子:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
map()的例子
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
reduce()的例子:
>>> def add(x,y): return x+y
...
>>> reduce(add, range(1, 11))
55
reduce()可以接受第三个参数。这个参数会作为一个“初值”,相当于在只有两个参数的时候, List里第一个元素的作用。这样即使List是空的,也不会有Exception了, 而是会返回这个初值作为reduce()的返回值。
|