2、数据结构:列表和元组
Python中主要是序列和映射两类,除此之外,集合(set)也是一种容器类型。
Python中有六种内建的序列:列表和元组,以及字符串、Unicode字符串、buffer对象和xrange对象。这里主要讨论列表和元组。
列表可以修改,元组则不能,几乎所有的情况列表都可以替代元组。
通用的序列操作:
1. 索引,通过索引获取元素,使用负数从右边(最后一个元素的编号是-1)。
2. 分片,提供两个索引作为边界,左闭右开的区间如
numbers=[1,2,3,4,5,6,7,8,9] numbers[-3:] [7, 8, 9] numbers[0:9:2]#步长 [1, 3, 5, 7, 9] numbers[9:7:-1] [9]
如果分片中最左边的索引比右边的晚出现在序列中,结果返回为空的序列。
对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素;而对于负数步长,则从序列的尾部开始向左提取元素,直到第一个元素。
3. 通过使用加号进行序列的连接操作
[1,2,3]+[4,5,6] [1,2,3,4,5,6] ‘hello ‘+’worlld’ ‘hello world’
4. 乘法,决定原序列被重复多少次
[1]*5
[1,1,1,1,1]
None是Python的内建值,它的确切含义是“这里什么也没有”,如果要初始化一个长度为10的列表,可以:sequence=[None]*10
5. 成员资格
检查值是否在序列中,使用in运算符。
6. 长度、最小值和最大值
内建函数len返回序列中所包含元素的数量,min和max分别返回序列中最大和最小的元素。
列表:Python的“苦力”
列表是可以改变大小的,有很多有用的、专门的方法。
list函数 |
创建列表,如list(‘hello’) |
索引的元素赋值 |
如x[1]=2 |
删除元素del |
删除元素,改变列表的长度 |
分片赋值 |
可实现插入、删除、替换等功能 |
append |
在尾部追加元素 |
count |
统计元素出现的次数 |
extend |
扩展序列,与+类似,不同是:直接修改被扩展序列 |
index |
列表中某值出现的第一个索引位置,没有找到抛出异常 |
Insert |
在指定位置插入对象,插入后对象位置为指定的索引 |
pop |
移除某位置的元素(默认最后一个),返回该元素值 |
remove |
移除列表中某一值的第一个匹配项,无返回值 |
reverse |
翻转元素 |
sort |
在原位置上对列表进行排序,无返回值 |
sort的三个参数(关键参数,通过名字来指定),cmp指定排序比较的方式;key指定函数,该函数为元素创建键,然后元素按键来排序;reverse布尔值是否反向排序。
元组:不可变序列,元组没有像列表一样的方法。
创建:
>>> 1,2,3 (1, 2, 3) >>> () ()#空元组 >>> (1)#不是元组 1 >>> 1,#逗号很关键 (1,)
tuple和list类似,将序列转化为元组。
意义何在?一般来看,及时在不改变内容时也可以使用列表来替代元组,但由于两点原因,元组不可替代:元组可以在映射中当键使用,而列表不行;元组作为很多内建函数和方法的返回值存在。