Wednesday, April 4, 2007

Python notes: 内置数据类型

Python中最常用的数据类型有:Dictionary(字典),List(列表),Tuple(元组)。

1. Dictionary
Dictionary类型定义了key(键)与value(值)的一一对应。其中的元素就是键值对。Dictionary类似于Java中的Hashtable类的实例。注意,元素是无序的!key必须是不可变的数据类型,如字符串,整数,tuple等,但是不同类型可以混用。

2. List
List是Python中最常用的数据类型。与字典的元素无序不同,list中的元素是有序的。
List支持slice,可以很方便的取片(部分元素)。比如:
>>> li = ["a", "b", "kevin", "daisy", "shanghai", "z", "end"]
>>> li[1:3] # 取第2~3个元素
>>> li[0:2] # 取第1~2个元素,其中0可以省略
>>> li[3:] # 取第3个之后的元素(不含第3个)
>>> li[:] # 取所有元素,即形成li的一个拷贝
向List中增加元素可以使用其方法:append,insert,extend等。其中特别要注意的是append与extend的区别:append可以接受任意数据类型的参数,将其追加到尾部。而extend只能接受一个list类型的参数,并将参数中的元素合并到原来的list中,新list的元素个数是两个list之元素个数之和。

在list中搜索:index可以返回某个元素的索引,如果出现多个相同的元素,则返回第一个出现的索引。要检查某个元素是否在list中,用in。

从list中删除元素:remove删除某个元素(只是首次出现的那个)。pop删除最后一个元素,并返回之。它与remove不同,remove并不返回删除的那个元素。

关于List还有一些运算符,比如 + , 这个 + 可以连接两个list,且返回新list。它与extend不同,extend仅仅修改(扩展)了原来list,并不返回。因此,对于大型list,extend执行速度更快。还可以使用 += ,* 等,* 可以重复list,比如,
>>> li = [1,2] * 3 # 相当于 li = [1,2] + [1,2] + [1,2]
3. Tuple
Tuple是一种不可变类型。和list一样,tuple中的元素是有序的,也支持slice。由于其只读属性,所以tuple没有任何方法。但是,如果只是对一列元素进行遍历,那么使用tuple比list更有效率。另外,tuple还可以作为dictionary的key(事实上,dictionary的key必须是不可变的,所以tuple可以胜任,而list不行)。tuple也可用于字符串格式化中。要注意,tuple和list是可以互相转化的:tuple函数冻结一个list,list函数解冻一个tuple。

关于这些数据类型的详细说明参见: Python Library Reference

No comments: