在python中,最基本的数据结构是序列
python中包含6中内建的序列
- 列表
- 元组
- 字符串
- Unicode字符串
- buffer对象
- xrange对象
最常用的两种是列表和元组
- 列表和元组的主要区别在于:列表可以修改,元组则不能
通用的序列操作
- 索引
- 分片(类似于shell中的字符串截取)
- 序列相加
- 乘法
- 成员资格(使用in函数)
- 长度、最大值和最小值(len、min和max函数)
列表:python的“苦力”
list函数(将序列转化为列表)
列表修改操作
- 单个元素赋值
- 删除元素(del语句)
- 分片赋值(一次为多个元素赋值)
列表方法
- append(末尾追加)
修改原列表,返回none
- count(统计某个元素值出现的次数)
- extend(在一个列表的末尾追加另外一个列表中的所有元素)
修改原列表,返回none
- index(找出某个元素在列表中第一个匹配项的索引位置)
- insert(将对象插入到列表中的某个索引前)
修改原列表,返回none
- pop(移除列表中的一个元素,默认是最后一个,并且返回该元素的值)
修改原列表,返回被移除的值
- remove(移除某个值在列表中的第一个匹配项)
修改原列表,返回none
- reverse(将列表中的元素反向存放)
修改原列表,返回none
- sort(对列表中的元素进行排序)
sort方法用于在原位置对列表进行排序。在“原位置排序”意味着改变原来的列表,从而让其中的元素能按一定的顺序排列,而不是简单地返回一个已排序的列表副本。
| >>> x=[3,1,2]
>>> x.sort()
>>> x
[1, 2, 3]
|
当用户需要一个排好序的列表副本,同时又保留原有列表不变的时候,不能使用下面的做法:
| >>> x=[3,1,2]
>>> y=x.sort()
>>> print y
None
|
因为sort方法修改了x
却返回了空值,那么最后得到的是已排序的x以及值为None
的y
。实现这个功能的正确方法是,首先把x
的副本复制给y
,然后对y
进行排序,如下所示:
| >>> x=[3,1,2]
>>> y=x[:]
>>> y.sort()
>>> y
[1, 2, 3]
>>> x
[3, 1, 2]
|
再次调用x[:]
得到的是包含了x
所有元素的分片,这是一种很有效率的复制整个列表的方法。只是简单地把x
赋值给y
是没用的,因为这样做就让x
和y
都执行同一个列表了。
| >>> x=[3,1,2]
>>> y=x
>>> y.sort()
>>> x
[1, 2, 3]
>>> y
[1, 2, 3]
|
* 高级排序(使用cmp、key、reverse三个参数)
元组:不可修改的序列
- tuple函数(将序列转化为元组)
- 元组可以在映射(和集合的成员)中当做键使用,而列表则不行