前言
本文是对【DAT208x】Python数据科学导论2.3 - 列表操作做的内容梳理。
课程视频(Bilibili源)
课程小结
列表操作 - 改变列表元素
想要修改Python列表中的元素,索引需要修改的元素,重新赋值即可。我们可以使用:
操作符对列表元素做批量修改。
列表操作 - 增加列表元素
对两个列表做+
运算,Python会将这两个列表首尾拼接起来。
列表操作 - 删除列表元素
可以使用del()
函数来删除列表中的元素。元素被删除后,列表元素会前移以保证列表的连续性。
Python列表内在机制
理解Python列表的内在机制非常重要。当我们创建出一个列表,列表中的数据实际存放在内存中,而列表名是指向内存中实际数据区的一个引用。
知识点考察
问:要将列表x
中的第三个元素改成"c"
,代码该怎么写?
x = ["a", "b", "b"]
A => x[2] = "c"
B => x[2] = c
C => x[3] = "c"
D => x[3] = c
解: A
问:要在列表x
尾部添加一个新元素”d”,代码该怎么写?
x = ["a", "b", "c"]
A => x[4] = "d"
B => x = x + "d"
C => x = x + ["d"]
D => x = x[4] + ["d"]
解: C
问:以下Python代码的执行结果为?
x = ["a", "b", "c", "d"]
del(x[3])
print(x)
A => ["b", "c", "d"]
B => ["a", "c", "d"]
C => ["a", "b", "d"]
D => ["a", "b", "c"]
解: D
编程练习
本节的编程练习,你将学着一步步操作Python列表,修改、添加、删除列表元素。
修改列表元素
修改Python列表元素非常容易。索引列表中的元素,重新赋值即可。我们既可以选择单个列表元素,也可以批量选择列表元素。
# 创建列表
x = ["a", "b", "c", "d"]
# 修改列表中第二个元素
x[1] = "r"
# 修改列表中第三至末尾的全部元素(批量选择)
x[2:] = ["s", "t"]
需要注意的是,列表元素索引是从0开始的。下面我们来做些练习。
# 创建列表`areas`
areas = [ "hallway", 11.25,
"kitchen", 18.0,
"living room", 20.0,
"bedroom", 10.75,
"bathroom", 9.50 ]
# 修改列表倒数第一个元素
areas[-1] = 10.50
# 修改列表中第五个元素
areas[4] = "chill zone"
# 打印查看修改结果
print(areas)
代码清单: 修改列表元素练习
扩展列表元素
如果想扩展列表元素,我们可以使用+
运算符来为原始列表”加”上一个新列表。
x = ["a", "b", "c", "d"]
y = x + ["e", "f"]
我们来对列表元素扩展做些练习。
# 创建列表`areas`
areas = [ "hallway", 11.25,
"kitchen", 18.0,
"chill zone", 20.0,
"bedroom", 10.75,
"bathroom", 10.50 ]
# 扩展列表元素
areas_1 = areas + ["poolhouse", 24.5]
# 再扩展列表元素
areas_2 = areas_1 + ["garage", 15.45]
# 打印查看结果
print(areas_1)
print(areas_2)
代码清单: 扩展列表元素练习
删除列表元素
我们可以调用del()
函数来删除列表中的元素。
x = ["a", "b", "c", "d"]
# 删除列表第二个元素
del(x[1])
元素被删除后,列表元素被删除后,所有删除元素后的列表元素会前移。
# 创建列表`areas`
areas = [ "hallway", 11.25,
"kitchen", 18.0,
"chill zone", 20.0,
"bedroom", 10.75,
"bathroom", 10.50,
"poolhouse", 24.5,
"garage", 15.45 ]
# 删除列表第一个元素
del(areas[0])
# 删除列表最后一个元素
del(areas[-1])
# 批量删除列表元素
del(areas[2:4])
# 打印查看结果
print(areas)
代码清单: 删除列表元素练习
拷贝列表
我们通过拷贝列表练习来加深对Python列表内在机制的理解。我们知道,列表名只是指向实际数据区的一个引用。如果我们直接使用=
赋值号将列表名赋给一个新变量,实现的只是再创建一个引用,或者说浅拷贝。要想连同列表数据完全拷贝一份,或者说实现深拷贝,我们可以循环遍历每一个列表元素,使用列表构造函数list()
,或使用列表切片[:]
。
# 创建一个列表
areas = [11.25, 18.0, 20.0, 10.75, 9.50]
# 实现列表深拷贝
areas_copy = areas[:]
# 改变拷贝列表元素
areas_copy[0] = 5.0
# 查看原始列表(元素未改变)
print(areas)
代码清单: 列表拷贝练习