第五章 Python数据结构
本章更详细地讨论一些已经讲过的数据类型的使用,并引入一些新的类型。
5.1 列表
列表数据类型还有其它一些方法。下面是列表对象的所有方法:
- insert(i, x) ---- 在指定位置插入一项。第一自变量是要在哪一个元素前面插入,用下标表示。例如,a.insert(0, x)在列表前面插入,a.insert(len(a), x)等价于a.append(x) 。
- append(x) ---- 等价于a.insert(len(a), x)
- index(x) ---- 在列表中查找值x然后返回第一个值为x的元素的下标。没有找到时出错。
- remove(x) ---- 从列表中删去第一个值为x的元素,找不到时出错。
- sort() ---- 对列表元素在原位排序。注意这个方法改变列表,而不是返回排序后的列表。
- reverse() ---- 把列表元素反序。改变列表。
- count(x) ---- 返回x在列表中出现的次数。
下例使用了所有的列表方法:
>>> a = [66.6, 333, 333, 1, 1234.5] >>> print a.count(333), a.count(66.6), a.count('x') 2 1 0 >>> a.insert(2, -1) >>> a.append(333) >>> a [66.6, 333, -1, 333, 1, 1234.5, 333] >>> a.index(333) 1 >>> a.remove(333) >>> a [66.6, -1, 333, 1, 1234.5, 333] >>> a.reverse() >>> a [333, 1234.5, 1, 333, -1, 66.6] >>> a.sort() >>> a [-1, 1, 66.6, 333, 333, 1234.5]
5.1.1 函数程序设计工具
Python中有一些函数程序设计风格的东西,例如前面我们看到的lambda形式。关于列表有三个非常有用的内置函数:filter(), map()和reduce()。
“filter(函数, 序列)”返回一个序列(尽可能与原来同类型),序列元素是原序列中由指定的函数筛选出来的那些,筛选规则是“函数(序列元素)=true”。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(函数,序列)”对指定序列的每