Python数据科学导论2.3 - 列表操作

Posted by zihengCat on 2018-04-22

前言

本文是对【DAT208x】Python数据科学导论2.3 - 列表操作做的内容梳理。

课程视频(Bilibili源)

av22252199 - P6

课程小结

列表操作 - 改变列表元素

想要修改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)

代码清单: 列表拷贝练习

拓展阅读