表(List)
表是 Python 程序里使用最多的一种复合数据类型。可以直接在程序里写出各种各样的表,也可以通过操作构造出各种所需的表。

直接构造表的形式是写一对方括号,里面列出一些逗号分隔的表达式。这样一段代码就是描述了(其计算的结果就是)一个表。一个表里可以包含不同类型的元素。例如可以写:

	a = ['PKU', 'Math', 2013, 7 * 24]
a 的值就是一个包含 4 个元素的表,前两个元素是字符串,后两个是整数。表描述里的表达式将在建立表的时候求值,以求出的值作为实际的表元素。

与字符串一样,表里的每个元素有一个下标,从 0 开始计数。也可以用 a[0],a[2],a[-1] 的形式取得表的元素,用 a[1:3],a[2:],a[:3] 的形式得到表的切片。

空表是不包含任何元素的表,b = [ ] 给变量 b 赋值一个空表。空表的长度为 0。

表的一些操作(假定 a 的值是一个表,m 和 n 是合适的整数)

  • len(a) 得到表的长度;

  • 给表元素赋新的值,这种操作将真正改变被赋值的那个表。如对上面建立的表做 a[3] = 'spring',就会使 a 的值变为 ['PKU', 'Math', 2013, 'spring festival'];

  • 可以用另一个表给表 a 的切片赋值,而且该表的长度不需要和那个切片的长度相同。例如 a[2:3] = [2014, 1, 31] 将使得a的值(作为a的值的那个表)变成了 ['PKU', 'Math', 2014, 1, 31, 'spring festival']。这种操作不但可能改变表的内容,还可能改变表的长度;

  • a.sort() 按 < 的顺序调整 a 中各元素的位置,使之从小到大排列。a.sort(reverse = true) 要求按从大到小的顺序排列元素。
list 是一种复合数据类型,每个具体的表也是一个对象,是复合数据对象。由于表的内容和结构都可以修改,因此它是一种 "可变的"(mutable)数据对象。看下面例子:
	>>> a = [1, 2, 3, 4, 5]
	>>> b = a
	>>> b
	[1, 2, 3, 4, 5]
	>>> a[3] = 13
	>>> b
	[1, 2, 3, 13, 5]
第二个赋值使 b 约束到 a 的值的那个表对象,也就是说,此后变量 a 和 b 的值是同一个对象。对 a[3] 的赋值修改了那个表对象,所以从 b 也能看到这个修改。

可以利用 range 创建整数的表,例如:

	>>> list(range(11))
	[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
	>>> list(range(3, 13))
	[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
	>>> list(range(0, 37, 7))
	[0, 7, 14, 21, 28, 35]
实际上这是在做类型转换:range 生成整数的序列,而后 list 把那个序列转换成一个表。 表的元素也可以是表,形成嵌套的表,例如:
	>>> c = [1, 2, [3, 4], 5]
	>>> c
	[1, 2, [3, 4], 5]
更多表操作参看 Python 教程 5.1 节,Python 标准库手册 4.6.4 节。后面还有些介绍。

表和 for 循环

表可以作为 for 循环中循环变量取值的来源,例如
	>>> n = 0
	>>> for i in [1, 3, 8, 13, 29, 17] :
		   n += i*i
或者:
	>>> n = 0
	>>> a = [1, 3, 8, 13, 29, 17]
	>>> for i in a :
		   n += i*i
只要执行的操作允许,也可以用元素类型不同的表,如
>>> for i in [1, 3, 7, 'list'] :
	   print (i)
采用什么样的表结构要看应用的需要。
本页及相关页面(除另声明者外)由裘宗燕创建维护,可自由用于各种学习活动。其他使用需得到作者许可。