📄 00000004.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: yyh (一笑了之), 信区: Linux <BR>标 题: 第五章 Python数据结构 <BR>发信站: BBS 水木清华站 (Tue Jun 20 17:04:54 2000) <BR> <BR>第五章 Python数据结构 <BR>本章更详细地讨论一些已经讲过的数据类型的使用,并引入一些新的类型。 <BR>5.1 列表 <BR>列表数据类型还有其它一些方法。下面是列表对象的所有方法: <BR>insert(i, x) ---- 在指定位置插入一项。第一自变量是要在哪一个元素前面插入,用 <BR>下标表示。例如,a.insert(0, x)在列表前面插入,a.insert(len(a), x)等价于a.app <BR>end(x) 。 <BR>append(x) ---- 等价于a.insert(len(a), x) <BR>index(x) ---- 在列表中查找值x然后返回第一个值为x的元素的下标。没有找到时出错 <BR>。 <BR>remove(x) ---- 从列表中删去第一个值为x的元素,找不到时出错。 <BR>sort() ---- 对列表元素在原位排序。注意这个方法改变列表,而不是返回排序后的列 <BR>表。 <BR>reverse() ---- 把列表元素反序。改变列表。 <BR>count(x) ---- 返回x在列表中出现的次数。 <BR> 下例使用了所有的列表方法: <BR>><I>>> a = [66.6, 333, 333, 1, 1234.5] </I><BR>><I>>> print a.count(333), a.count(66.6), a.count('x') </I><BR>2 1 0 <BR>><I>>> a.insert(2, -1) </I><BR>><I>>> a.append(333) </I><BR>><I>>> a </I><BR>[66.6, 333, -1, 333, 1, 1234.5, 333] <BR>><I>>> a.index(333) </I><BR>1 <BR>><I>>> a.remove(333) </I><BR>><I>>> a </I><BR>[66.6, -1, 333, 1, 1234.5, 333] <BR>><I>>> a.reverse() </I><BR>><I>>> a </I><BR>[333, 1234.5, 1, 333, -1, 66.6] <BR>><I>>> a.sort() </I><BR>><I>>> a </I><BR>[-1, 1, 66.6, 333, 333, 1234.5] <BR>5.1.1 函数程序设计工具 <BR>Python中有一些函数程序设计风格的东西,例如前面我们看到的lambda形式。关于列表 <BR>有三个非常有用的内置函数:filter(), map()和reduce()。 <BR>“filter(函数, 序列)”返回一个序列(尽可能与原来同类型),序列元素是原序列中 <BR>由指定的函数筛选出来的那些,筛选规则是“函数(序列元素)=true”。filter()可以用 <BR>来取出满足条件的子集。例如,为了计算一些素数: <BR>><I>>> def f(x): return x % 2 != 0 and x % 3 != 0 </I><BR>... <BR>><I>>> filter(f, range(2, 25)) </I><BR>[5, 7, 11, 13, 17, 19, 23] <BR>“map(函数,序列)”对指定序列的每一项调用指定的函数,结果为返回值组成的列表。 <BR>map() 可以对序列进行隐式循环。例如,要计算三次方,可用: <BR>><I>>> def cube(x): return x*x*x </I><BR>... <BR>><I>>> map(cube, range(1, 11)) </I><BR>[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] <BR>可以有多个序列作为自变量,这时指定的函数必须也有相同个数的自变量,函数从每个 <BR>序列分别取出对应元素作为自变量进行调用(如果某个序列比其它的短则取出的值是No <BR>ne)。如果指定的函数是None,map()把它当成一个返回自己的自变量的恒同函数。在函 <BR>数用None的情况下指定多个序列可以把多个序列搭配起来,比如“map(None, list1, l <BR>ist2)”可以把两个列表组合为一个成对值的列表。见下例: <BR>><I>>> seq = range(8) </I><BR>><I>>> def square(x): return x*x </I><BR>... <BR>><I>>> map(None, seq, map(square, seq)) </I><BR>[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49)] <BR>“reduce(函数, 序列)”用来进行类似累加这样的操作,这里的函数是一个两个子变量 <BR>的函数,reduce()先对序列的前两项调用函数得到一个结果,然后对结果和序列下一项 <BR>调用函数得到一个新结果,如此进行到序列尾部。例如,要计算1到10的和: <BR>><I>>> def add(x,y): return x+y </I><BR>... <BR>><I>>> reduce(add, range(1, 11)) </I><BR>55 <BR>如果序列中只有一个值则返回这个值,序列为空时会产生例外。可以指定第三个自变量 <BR>作为初始值。有初始值时对空序列函数将返回初始值,否则函数先对初始值和序列第一 <BR>项作用,然后对结果和序列下一项作用,如此进行到序列尾。例如: <BR>><I>>> def sum(seq): </I><BR>... def add(x,y): return x+y <BR>... return reduce(add, seq, 0) <BR>... <BR>><I>>> sum(range(1, 11)) </I><BR>55 <BR>><I>>> sum([]) </I><BR>0 <BR>5.2 del语句 <BR>上面我们看到,列表的remove()方法可以从列表中删去某个取值的项,我们还可以用de <BR>l 语句来删除指定下标的项。也可以用del语句从列表中删除一个片断(前面我们是用给 <BR>片断赋空列表的办法删除片断的)。例如: <BR>><I>>> a </I><BR>[-1, 1, 66.6, 333, 333, 1234.5] <BR>><I>>> del a[0] </I><BR>><I>>> a </I><BR>[1, 66.6, 333, 333, 1234.5] <BR>><I>>> del a[2:4] </I><BR>><I>>> a </I><BR>[1, 66.6, 1234.5] <BR>del也可以用来删除整个变量,例如: <BR>><I>>> del a </I><BR>变量删除以后再引用该变量就会出错(除非又给它赋值了)。后面我们还会看到del的其 <BR>它一些应用。 <BR>5.3 序表和序列 <BR>我们看到列表和字符串有许多共同点,例如,下标和片断运算。它们都属于序列数据类 <BR>型。因为Python是一个正在不断发展的语言,以后还可能会加入其它的序列数据类型。 <BR>现在还有一种标准的序列数据类型,称为序表(tuple)。 <BR>序表由一系列值用逗号分隔而成,例如: <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -