python中最基本的数据结构:sequence ,六种内建序列:列表 元组 字符串 Unicode字符串 buffer对象 xrange对象
列表和元组的区别在于,列表可以修改,元组不可以,列表大部分情况下可以替代元组,除了使用元组作为字典的键,因为键不能修改,所以不能使用列表
用序列存储一个人的信息
>>>edward=['Edward Gumby',42] >>>john=['John Smith',50] >>>database=[edward,john] >>>database [['Edward Gumby',42],['John Smith',50]]
容器
1 序列---2 映射(字典)----3 集合(set):既不是序列也不是映射的容器类型
序列每个元素都有自己的编号,映射每个元素都有自己的名字(键)
---------通用的序列操作-----------
1 索引 indexing >>>greeting[-1] 'g' >>>fourth=raw_input('Year:')[3] Year:2005 >>>fourth '5' 2 分片 sliceing 访问一定范围内的元素 >>>tag='<a href="http://www.python.org">Python web site</a>' >>>tag[9:30] 'http://www.python.org' >>>tag[32:-4] 'python web site' 注意取的范围是 [m:n) >>>numbers=[1,2,3,4,5,6,7,8,9,10] >>>numbers[7:10] [8,9,10] 现在,索引10指向第11个元素,这个元素不存在其实 >>>numbers[-3:0] >>>[] 空序列 >>>numbers[-3:] ------捷径 [8,9,10] >>>numbers[:3] [1,2,3] 注意这是复制 >>>numbers[:] [1,2,3,4,5,6,7,8,9,10] 步长(step length) >>>numbers[0:10:-2] [1,3,5,7,9] >>>numbers[8:3:-1] [9,8,7,6,5] --------------------[8:3)依然奏效 序列相加 >>>[1,2,3]+[4,5,6] [1,2,3,4,5,6] >>>[1,2,3]+'world' ---ERR 结论:两种相同类型的序列才能进行连接操作 乘法 >>>'python'*5 'pythonpythonpythonpythonpython' -----字符串也是序列 None >>>sequence=[None]*10--------初始化一个长度为10的列表
>>> range(1,5) #代表从1到5(不包含5) [1, 2, 3, 4] >>> range(1,5,2) #代表从1到5,间隔2(不包含5) [1, 3] >>> range(5) #代表从0到5(不包含5) [0, 1, 2, 3, 4] 再看看list的操作: ? array = [1, 2, 5, 3, 6, 8, 4] #其实这里的顺序标识是 [1, 2, 5, 3, 6, 8, 4] (0,1,2,3,4,5,6) (-7,-6,-5,-4,-3,-2,-1) >>> array[0:] #列出0以后的 [1, 2, 5, 3, 6, 8, 4] >>> array[1:] #列出1以后的 [2, 5, 3, 6, 8, 4] >>> array[:-1] #列出-1之前的 [1, 2, 5, 3, 6, 8] >>> array[3:-3] #列出3到-3之间的 [3] 那么两个[::]会是什么那? ? >>> array[::2] [1, 5, 6, 4] >>> array[2::] [5, 3, 6, 8, 4] >>> array[::3] [1, 3, 4] >>> array[::4] [1, 6] 如果想让他们颠倒形成reverse函数的效果 >>> array[::-1] [4, 8, 6, 3, 5, 2, 1] >>> array[::-2] [4, 6, 5, 1]