列表可以使用所有适用于序列的标准操作, 例如索引, 分片, 连接和乘法. 但列表还有一些属于自己的操作, 如修改列表本身的操作, 这些操作包括元素赋值, 元素删除, 分片赋值以及下一节要将的列表方法.
1. 列表元素赋值
如果要修改列表中的某一个元素, 可以像使用数组一样对列表中的特定元素赋值, 也就是使用一对中括号指定元素在列表中的索引, 然后使用赋值运算符 (=) 进行赋值.
本例修改了列表 s 中的前两个元素值.
- s = ["Bill", "Mike", "John"]
- s[0] = "Mary"
- s[1] = 20
- print(s) # 运行结果:['Mary', 20, 'John']
程序运行结果如下图所示.
在上面的代码中, 通过列表的元素赋值操作, 修改了列表 s 中的前两个的元素, 第 1 个元素修改成了 "Mary", 第 2 个元素修改成了 20.
在列表元素赋值的操作中, 列表索引可以是负数, 在这种情况下, 会从列表最后一个元素开始算起. 例如, s[-1]表示倒数第 1 个列表元素, s[-2]表示倒数第 2 个列表元素. 不过不管列表索引使用正数还是负数, 都不能超过索引范围, 否则会抛出异常.
本例使用超过列表索引范围的索引, 会抛出异常.
- s = ["Bill", "Mike", "John"]
- s[-1] = "Mary" # 修改列表最后一个元素值
- print(s) # 运行结果:['Bill', 'Mike', 'Mary']
- s[3] = "Peter" # 索引 3 超出了列表 s 的索引范围(-3 到 2), 会抛出异常
- s[-3] = "蜘蛛侠" # 索引 - 3 是列表 s 的第 1 个元素, 相当于 s[0]
- print(s) # 运行结果:['蜘蛛侠', 'Mike', 'Mary']
- s[-4] = "钢铁侠" # 索引 - 4 超出了列表 s 的索引范围(-3 到 2), 会抛出异常
程序运行结果如下图所示.
2. 删除列表元素
从列表中删除元素也很容易, 使用 del 语句就可以做到.
- numbers = [1,2,3,4,5,6,7,8]
- del numbers[2] # 删除列表 numbers 中的第 3 个元素
3. 分片赋值
分片赋值和分片获取子列表一样, 也需要使用分片操作, 也就是需要指定要操作的列表的范围.
本例将利用分片赋值将列表中的子列表替换成其他列表. 并使用 list 函数将字符串分解成由字符组成的列表, 并替换字符串中的某一部分.
- s = ["hello", "world","yeah"]
- s[1:] = ["a","b","c"] # 将列表 s 从第 2 个元素开始替换成一个新的列表
- print(s) # 运行结果:['hello', 'a', 'b', 'c']
- name = list("Mike") # 使用 list 函数将 "Mike" 转换成由字符组成的列表
- print(name) # 运行结果:['M', 'i', 'k', 'e']
- name[1:] = list("ary") # 利用分片赋值操作将 "Mike" 替换成了 "Mary"
- print(name) # 运行结果:['M', 'a', 'r', 'y']
程序运行结果如下图所示.
上面的代码使用了分片赋值对原列表进行了赋值操作, 我们可以看到, 分片赋值是用另一个列表来修改原列表中的子列表. 也就是将原列表中的子列表替换成另外一个子列表. 而且在赋值时, 被替换的子列表和新的子列表可以不等长. 例如,["world","yeah"]可以被替换为['a', 'b', 'c'].
可能有很多读者会想到, 我们可以利用这个特性在列表中插入一个列表, 或删除一些列表元素.
本例将利用分片赋值在列表 numbers 中插入一个列表, 并删除一些列表元素.
- numbers = [1,6,7]
- # 在列表 numbers 中插入一个列表, 运行
- numbers[1:1] = [2,3,4,5]
- print(numbers)
- numbers[1:4] = []
- print(numbers)
程序运行结果如下图所示.
在上面的代码中, 使用分片赋值操作在列表 numbers 中的 1 和 6 之间插入了列表 [2,3,4,5].numbers[1:1] 中冒号 (:) 前面的数字表示要替换的子列表的第 1 个元素在父列表中的索引, 而冒号后面的数字表示子列表下一个元素在父列表中的索引, 所以冒号前后两个数字相等, 表示不替换列表中的任何元素, 直接在冒号前面的数字表示的索引的位置插入一个新的列表. 最后使用分片赋值将第 2,3,4 个元素值替换成了空列表, 所以最后 numbers 列表的值是[1,5,6,7].
Python 从菜鸟到高手已经出版, 开始连载了, 购买送视频课程 http://blog.51cto.com/androidguy/2165688
Python 从菜鸟到高手(11): 列表的基础操作
来源: http://www.bubuko.com/infodetail-2760755.html