第四章 列表
4.1 列表数据类型
- "列表"是一个值,它包含多个字构成的序列
- spam变量被赋予一个值:列表值。但列表值本身就包含多个值(用,隔开)
- []是个空列表,不包含任何值,类似于空字符串''
4.1.1 用下标取得列表中的单个值
- 下标从0开始,依次递增
- 下标访问不能超过列表值的个数
- 下标只能是整数
- 列表可包含其他列表,可多重下标访问
- 第一个下标表明使用哪个列表值,第二个下标表明该列表值中的值
4.1.2 负数下标
- 下标虽然从0开始,但允许出现负值
- -1指最后一个下标,-2指倒数第二个,以此类推
4.1.3 利用切片取得子序列
- “切片”可从列表中获取多个值
- 切片中,第一个整数是切片开始处下标,第二个整数是切片结束处下标(但不包含)
- 切片求值为一个新的列表值,切片长度为冒号两边整数之差
- 可省略切片中冒号两边的一个或两个下标(省略第一个默认为0,省略第二个默认为列表长度)
4.1.4 用 len() 取得列表的长度
4.1.5 用下标改变列表中的值
4.1.6 列表连接和列表复制
- + 可连接两个列表,得到一个新的列表
- * 可用于一个列表和一个整数,实现列表复制
4.1.7 用 del 语句从列表中删除值
- del 语句将删除列表中下标处的值,表中所有在被删除值后面的值,都将向前移动
- del 语句也可删除简单变量(几乎不用)
4.2 使用列表
catNames = []
while True:
print('Enter the name of cat' + str(len(catNames) + 1) + ' (Or enter nothing to stop.):')
name = input()
if name=='':
break
catNames = catNames + [name]
print('The cat names are:')
for name in catNames:
print(''+ name)
4.2.1 列表用于循环
- range()函数返回值是类似列表的值,故上两种方式输出相同
- 每次迭代时,让变量依次设置为列表中的值
【常用技巧】
4.2.2 in 和 not in 操作符
- 利用 in 和 not in 可以判断一个值是否在列表中
4.2.3 多重赋值技巧
- 三行可简写为一行赋值,但变量的数目和列表的长度必须严格相等
4.3 增强的赋值操作
- += -= *= /= %=
- +=操作符也可用于完成字符串和列表的连接
- *= 操作符也可用于完成字符串和列表的复制
4.4 方法
-
和函数一回事,只是它是调用在一个值上
4.4.1 用 index() 方法在列表中查找值
-
index()方法用于判断传入的值是否在列表中,有则返回它第一次出现时(若列表中重复出现)的下标,没有则报错
4.4.2 用 append() 和 insert() 方法在列表中添加值
- append() 方法,将参数插入到列表末尾
- insert() 方法,将参数插入到指定(下标)位置
- append() 和insert() 是方法,属于单个数据类型,只能在列表上调用,不能在其他值上调用
4.4.3 用 remove() 方法从列表中删除值
- remove() 方法:删除列表中与参数相等的第一个出现的值(该值在列表中出现多次)
- 删除不存在的值时,出错
- del 语句用于删除知道下标的值,remove() 用于直接删除指定值
4.4.4 用 sort() 方法将列表中的值排序
- sort() 方法用于列表排序
- 若指定关键字参数 reverse=True 则逆序排序
- 不能对既有数字又有字符串的列表排序
- 排序时,使用ASCII字符顺序,故大写在小写之前
- 若以字典顺序排序,需指定关键字参数 key=str.lower