本页面仅用于内容预览,不包含动画交互效果
讲义加载中,请耐心等待……
Python 编程:从入门到实践Python 编程:从入门到实践(第三版)(第三版)Teacher Name / Email1
与《Python 编程:从入门到实践(第三版)》一书配套使用讲义中的文本及绘图采用署名-非商业性使用-相同方式共享协议CC BY-NC-SA 4.0进行许可引用的网络图片附有超链接,可用于访问来源讨论、意见、答疑、勘误、更新:https://github.com/scruel/pcc_3e_slides作者:@Scruel Tao关于本讲义关于本讲义2
33 列表简介列表简介3.1 列表是什么3.2 修改、添加和删除元素3.3 管理列表3.4 避免索引错误3.5 小结3
3.13.1 列表是什么列表是什么4

无序的元素

3.13.1 列表是什么列表是什么列表(list由一系列按特定顺序排列的元素组成5
3.13.1 列表是什么列表是什么列表(list由一系列按特定顺序排列的元素组成使用方括号来标识,用逗号分隔其中的元素,元素之间可以没有任何关系。6
3.13.1 列表是什么列表是什么列表(list由一系列按特定顺序排列的元素组成使用方括号来标识,用逗号分隔其中的元素,元素之间可以没有任何关系。建议给列表指定一个表示复数的名称(如 lettersdigitsbikes = ['trek', 'redline', 'giant']print(bikes)运行结果['trek', 'redline', 'giant']7
3.1.13.1.1 访问列表元素访问列表元素索引(index:元素在列表中的位置,用于访问列表中的元素特别的火车头,小心差一错误!8
3.1.23.1.2 列表索引列表索引索引(index:元素在列表中的位置,用于访问列表中的元素负数索引:表示列表中倒数第几个元素的位置9
3.1.13.1.1 访问列表元素访问列表元素索引(index:元素在列表中的位置,用于访问列表中的元素负数索引:表示列表中倒数第几个元素的位置运行结果trekgiant giantbikes = ['trek', 'redline', 'giant']print(bikes[0])print(bikes[2], bikes[-1])10
3.1.33.1.3 使用列表中的各个值使用列表中的各个值和其他变量一样,我们可以使用列表中的各个值例如,在 f-字符串中,我们可以根据列表中的值来创建消息:我们使用 bicycles[0] 的值(第一款自行车)生成了一个句子,并赋值给 message,程序的输出如下:bicycles = ['trek', 'cannondale', 'redline', 'specialized']message = f"My first bicycle was a {bicycles[0].title()}."print(message)运行结果My first bicycle was a Trek.11
3.2.13.2.1 修改列表元素修改列表元素要修改列表元素,我们需要指定列表名和要修改的元素的索引,再指定该索引位置的新值。列如,我们可以修改摩托车列表中的第一个值:motorcycles = ['honda', 'yamaha', 'suzuki']print(motorcycles)motorcycles[0] = 'ducati'print(motorcycles)运行结果['honda', 'yamaha', 'suzuki']['ducati', 'yamaha', 'suzuki']12
3.2.23.2.2 在列表中添加元素在列表中添加元素我们随时可以在列表中添加新元素 lst.append(val):在列表的末尾添加新元素。bikes = []bikes.append('redline')13
3.2.23.2.2 在列表中添加元素在列表中添加元素我们随时可以在列表中添加新元素 lst.append(val) :在列表的末尾添加新元素。 lst.insert(idx, val):在列表的指定位置上添加新元素。bikes = []bikes.append('redline')bikes.insert(0, 'trek')print(bikes)运行结果['trek', 'redline']14
3.2.33.2.3 从列表中删除元素从列表中删除元素我们可以删除列表中指定索引的元素 del lst[idx] :删除列表中指定索引的元素bikes = ['giant', 'trek', 'redline']del bikes[0]print(bikes)运行结果['trek', 'redline']15
3.2.33.2.3 从列表中删除元素从列表中删除元素我们可以删除列表中指定索引的元素 del lst[idx] :删除列表中指定索引的元素 lst.pop([idx]) -> val:删除并返回列表中指定索引(默认为末尾) 的元素,弹出pop)的值能被接着使用bikes = ['giant', 'trek', 'redline']popped_bike = bikes.pop(0)print(bikes.pop())print(bikes)print(popped_bike)运行结果redline['trek']giant123423416

(1 处)我们首先从列表中弹出索引为 0 的值,并将其赋给变量 popped_bike,这个值是 giant。

(2 处)然后从列表中弹出一个值后直接打印,此时将会打印出 readline。

(3 处)然后打印这个列表,以核实从中删除了两个值。

(4 处)最后打印弹出的值,以证明依然能够访问被删除的值。

3.2.33.2.3 从列表中删除元素从列表中删除元素我们也可以根据值来删除列表中的元素lst.remove(val):删除列表中匹配到的第一个指定元素。motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']too_expensive = 'ducati'motorcycles.remove(too_expensive)print(motorcycles)print(f"\nA {too_expensive.title()} is too expensive for me.")运行结果['honda', 'yamaha', 'suzuki']A Ducati is too expensive for me.17

要注意的是,列表中的元素被删除了以后,传入的实参并不会被删除,所以我们仍然可以在后面的代码中使用它

3.33.3 管理列表:排序管理列表:排序我们可以通过下面的方法/函数来对列表排序 lst.sort() :永久修改原列表,对其中的元素进行排序。 sorted(lst) -> lst':返回排序后的列表的副本。nums = [9, 6, 1, 4, 2]print(sorted(nums))print(nums) # 原列表不变# 列表排序(默认正序)nums.sort()print(nums)# 列表排序(指定倒序)nums.sort(reverse=True)print(nums)运行结果[1, 2, 4, 6, 9][9, 6, 1, 4, 2][1, 2, 4, 6, 9][9, 6, 4, 2, 1]1234123418

(1 处)我们首先调用 sorted() 函数进行临时排序并打印,这个函数不会影响原列表,打印的结果会是有序的列表

(2 处)然后从打印原列表,以核实原列表没有受到影响

(3 处)接着调用列表的 sort() 方法,由于这个方法不返回信息,我们在下一行打印列表,打印的结果也是有序的列表

(4 处)最后我们再次调用 sort() 方法,但此时传递参数 reverse=True 让其倒序排列,打印的结果则是倒序的有序列表

3.33.3 管理列表:反转管理列表:反转我们可以通过下面的方法来反转列表lst.reverse():永久修改原列表,对其中的元素进行翻转。nums = [9, 6, 1, 4, 2]nums.reverse() # 翻转列表print(nums)运行结果[2, 4, 1, 6, 9]reverse() 方法会永久地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序:只需对列表再次调用 reverse() 即可。19
3.33.3 管理列表:获取长度管理列表:获取长度 使用 len() 函数可以快速获悉列表的长度: len(lst) -> num:获取列表的元素个数。cars = ['bmw', 'audi', 'toyota', 'subaru']print(len(cars))运行结果4这个函数很有用,可以帮助我们明确还有多少个外星人未被消灭,确定需要管理多少项可视化数据,计算网站有多少注册用户,等等。20

len() 是一个 Python 的内置函数

3.33.3 管理列表:获取长度管理列表:获取长度小技巧:终端中会自动对输入的最后一行调用 print() 函数,所以如果你是在终端中尝试运行,可以省略最后的 print() 函数:21

注:终端中 Python 的解释器,又称为交互式解释器,即 REPL(read-eval-print loop,“读取-求职-输出”循环),其本身会将运行的结果进行输出。

3.43.4 避免索引错误避免索引错误小心索引错误——列表的索引是从 0 开始的,而不是从 1 开始。motorcycles = ['honda', 'yamaha', 'suzuki']print(motorcycles[3])运行结果Traceback (most recent call last): File "motorcycles.py", line 2, in <module> print(motorcycles[3]) ~~~~~~~~~~~^^^IndexError: list index out of range不要大意,索引错误很常见,尤其是差一错误!22
3.53.5 小结小结学习了列表是什么,以及如何使用其中的元素。学习了如何定义列表,如何增删元素,以及如何对列表进行永久排序和临时排序。学习了如何获得列表的长度,以及如何在使用列表时避免索引错误。在下一章中,我们将学习更多关于列表的相关知识,尤其是如何以更高效的方式处理列表元素。23