Skip to content

在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方法用于在原位置对列表进行排序。在“原位置排序”意味着改变原来的列表,从而让其中的元素能按一定的顺序排列,而不是简单地返回一个已排序的列表副本。

1
2
3
4
>>> x=[3,1,2]
>>> x.sort()
>>> x
[1, 2, 3]
当用户需要一个排好序的列表副本,同时又保留原有列表不变的时候,不能使用下面的做法:
1
2
3
4
>>> x=[3,1,2]
>>> y=x.sort()
>>> print y
None
因为sort方法修改了x却返回了空值,那么最后得到的是已排序的x以及值为Noney。实现这个功能的正确方法是,首先把x的副本复制给y,然后对y进行排序,如下所示:
1
2
3
4
5
6
7
>>> x=[3,1,2]
>>> y=x[:]
>>> y.sort()
>>> y
[1, 2, 3]
>>> x
[3, 1, 2]
再次调用x[:]得到的是包含了x所有元素的分片,这是一种很有效率的复制整个列表的方法。只是简单地把x赋值给y是没用的,因为这样做就让xy都执行同一个列表了。
1
2
3
4
5
6
7
>>> x=[3,1,2]
>>> y=x
>>> y.sort()
>>> x
[1, 2, 3]
>>> y
[1, 2, 3]
* 高级排序(使用cmp、key、reverse三个参数)

元组:不可修改的序列

  • tuple函数(将序列转化为元组)
  • 元组可以在映射(和集合的成员)中当做键使用,而列表则不行