内建 6 种序列
列表、元组、字符串、Unicode 字符串、buffer 对象、xrange 对象。
正文序列类型 str
字符串有穷序列 不可变 immutable。
操作:求长度,取成员,切字串(切片),查找字串,判断成员字符类型。
基于已有字符串构造新串:改变大小写,拼接, 格式化,字串替换,切片。
字符串方法
join() split()
互为逆方法,作用分别为在字符串序列中规律添加元素,在字符串中删除规律元素,将字符串分割成单个序列:
1 | '1', '2', '3', '4', '5'] seq = [ |
不带任何参数的 split(),所有空格符(空格,Tab,换行)都分隔开。还有其他方法:lsplit,rsplit
其他操作
- input() raw_input()
- + 拼接字符串, 字符串表示 str 和 repr,将值转换为字符串的两种机制,一个是使用 str() 函数转换成合理形式的字符串,repr() 是创建一个字符串,以合法到的 Python 表达式形式来表示值。
- 长字符串可用三个引号代替普通括号;原始字符串,需要显示路径需要很多的斜杠,不想要用太多转义符的地方,以
r
开头,如r'/User/Chen/PythonProjects'
;Unicode 字符串以u
开头,用decode()
和encode()
进行解码。 - 字符串格式化 % ,设置宽度精度,左右对其,填充0
- 替换 ,translate() 处理单个字符,可同时进行,replace() 替换所有匹配项
- strip() 返回去除两侧(不包括内部)空格的字符串,lstrip() rstrip() 左右。
序列类型 list tuple
通用序列操作:索引,切片,加,乘,检查成员资格,长度,最大值,最小值。还有个最重要的操作迭代,以后单独讲。
列表 可变 mutable
任意元素序列,支持所有共有的序列操作。
所有可变序列操作(改变当前列表):元素替换(复制),切变,替换/删除,元素插入删除。
切片
- 切片区间是左闭右开;支持负索引
- 最后一个元素是 -1
- 复制整个列表左右索引都为空,前索引后索引可有一个为空
- 默认步长为 1,大于 1 的步长如 4,指的是每 4 个元素的第一个,负数步长就是反过来提取。
- a[1, 2, 3, 4, 5]:取偶数位置:a[1::2],从索引 1 开始,取每两个元素的第一个
基本操作
- 序列相加(返回新序列,不改变原序列);乘法,*;返回新序列;成员资格,in/not in;长度,最小值,最大值。
- 通过索引、切片改变列表,元素赋值,删除元素使用 del 语句。
- list() 函数,适用于所有类型的序列。
列表方法
- append() 在末尾追加新的对象
- count() 统计某元素出现的次数
- extend() listB.extend(listB)在末尾一次性追缴另一个列表中的多个值,原位置操作(in-place operation)
- index() 匹配元素的第一个索引值
- insert() insert(3, “insert”),在原序列索引 3 前插入元素,等价于切片赋值 list[3:3] = “insert”
- pop() 移除最后一个元素,并返回,可以 用来实现栈这个数据结构,后进先出,LIFO
- remove() 移除第一个匹配项
- reverse() 将元素反向存放
- sort() 原位置排序
元组 不可变 无方法
任意元素有穷序列,一个元组的成员可以为不同类型的对象 序列共有操作:成员判断(in, not in),取元素/切片,和长度,元素检索/计数,最大/最小,拼接/重复拼接(产生新序列)。
不变序列唯一特殊操作 hash,从任意个不变序列产生一个整数。
不变序列可作为字典的关键码,可作为 set/forzenset 的元素。
集合类型 set forzenset
任意满足条件的元素的汇集。
forzenset 支持所有不变集合操作:元素个数,元素判断,集合之间的关系(包含/香蕉),集合运算(并/交/差/对称差)。
set 还支持可变集合操作,修改集合的运算(并/交/差/对称差),加入/删除元素
集合的元素只能至不可变对象,可求出 hash 值。
映射类型 dict
字典 一组关键码到一组值的映射。
基本操作:添加键值对,检索键值对。
其他操作:元素个数,键存在,元素删除(基于键),其它修改字典的操作。
字典基本操作
长度,将值关联到键上,依据键取值,依据键删除键值对,依据键检查键值对是否存在于字典中。
字典和列表的区别:
- 键类型:整型,浮点,字符串,或元组等任何不可变类型。
- 自动添加:键不存在于字典中,可以为其分配一个默认值,列表 append() 方法不能在索引之外简历新项。
- 成员资格:
for k in d
依据键查找字典中的键值对,for v in l
查找列表中的值。
字典方法
- dict() 用键值对或者映射和关键字参数简历字典
- clear() 清除字典中所有项,原地操作,无返回值。
- copy() 浅拷贝(shallow copy),返回一个键值对一样的字典,值就是本身,和深拷贝(deep copy)还是有区别的,用深拷贝的情况较多,后面单独讲。
- fromkeys() 依据给定的键简历新的字典,默认值为 None,也可以自己指定默认值。
- get() 宽松的访问字典项方法,访问不存在的键,返回默认值 None,也可指定默认值。
- has_key() 检查是否有给定的键。
- items() 和 iteritems() items() 将字典项以列表的形式返回,无序;iteritems() 返回一个迭代器对象,更为高效,迭代器对象可以用来进一步筛选操作。
- keys() iterkeys() 和上面一样,分别返回键的列表和迭代器。
- values() itervalues() 分别返回值的列表和迭代器。
- pop() 移除给定键的键值对,并返回。
- popitem() 移除随机一个键值对,并返回。
- setdefault() 获得给定键的值,不存在时设定键值,默认值 None。
- update() 用一个字典更新另一个字典,相同键会覆盖。
其他数据结构
deque