第二章 列表,元组和字符串
2.1 序列
在python中,数据结构分为有序和无序两种,其中有序的数据结构叫做序列。
常用的序列有三种:列表,元组和字符串。其中列表可以修改,而元组不可以修改。
可以包含其他对象的对象成为容器,列表和元组都是容器,而字符串不是。
2.2 序列操作
2.2.1 索引
通过元素编号来访问序列内容,成为索引。如
my_list = [‘father’, ‘mother’]
my_list[0]
2.2.2 切片
两个索引加上冒号可以范围访问元素
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers[3:6]
[4, 5, 6]
0不能表示末尾,要表示末尾需要省略
numbers[-2:]
可以指定步长,步长不能为0,步长为负是从右到左(固定!)永远从起点开始,而不是从范围最右侧开始。
2.2.3 其他操作
相加:[1, 2, 3] + [4, 5, 6]
相乘:[1] * 5
检查值是否在序列中:in
2.3 列表
2.3.1 基本列表操作
赋值:x[1] = 1
删除:del x[1]
按位置删除,删除操作中间需要隔着一个空格,这样的操作并不多见
切片赋值:x[1:3] = ‘bj’
因此可以利用切片赋值进行批量插入和批量删除
2.3.2 方法
append:x.append(1)
clear: x.clear()
copy: b = a.copy()
复制可以指向不同的列表,否则指向同一个
count: x.count(1)
计算指定元素出现了多少次
extend: a.extend(b)
a列表末尾附加b列表,直接改变a列表
index: x.index(1)
只能查找该元素第一次出现的索引
insert: x.insert(3, ‘boy’)
直接在该位置插入元素,原位置的元素向后移动
pop: x.pop(0)
默认队尾,可以用0位置变成队首,唯一一个改变列表且有返回值的方法
remove: x.remove(1)
删除所有指定值
reverse: x.reverse()
倒排
sort: x.sort()
只能用于就地排序
赋值排序用 y = sorted(x), 其中x保持不变
高级排序x.sort(key = Len, reverse = True)
2.4 元组
元组就是不可变的列表,可以防止可能的错误修改,也可以用作映射的键
2.5 字符串
字符串同元组一样,也是不可变的。字符串也是序列,但不是容器,不能包含其他对象
2.5.1 基本格式
下面介绍三种字符串格式设置的方法
2.5.1.1 字符串格式运算符
字符串格式运算符——百分号类似于C语言中的printf
“%.2f” %(i)
2.5.1.2 字符串模版
from string import Template
tmpl = Template(’$boy, $girl,hello world’)
str = tmpl.substitute(boy=‘Mars’, girl=‘Lily’)
2.5.1.3 精简字符串方法format
字符串格式的方法是format是最新的方法
每个替换字段使用花括号,里面可以包含序号,名称,或者格式
命名字段:"{x: .2f}".format(x = i)
索引:"{0} {1} and {0}".format(“a”, “b”)
如果命名字段与变量名名字相同可以简写,这种情况下要在最前面加f(表示format)
简写:“f{i.2f}”
注:里面的类型转换有限制,例如整数可以转换成二进制或者十进制,但不能转换成字符串
2.5.2 完整字符串方法format
转换标志:
可以使用!后追加(s,r 和a)来进行str,repr和ascii转换
print("{name!s} {name!r} {name!a}".format(name=name))
类型转换:
b:二进制
d:十进制
f:定点数
s:字符串