Python 编程:从入门到实践
(第三版)
Teacher Name / Email
关于本讲义
• 与《 Python 》
• 讲义中的文本及绘图采用署名-非商业性使用-相同方式共享协议(CC BY-NC-SA 4.0)进
行许可
• 引用的网络图片附有超链接,可用于访问来源
• 讨论、意见、答疑、勘误、更新:
https://github.com/scruel/pcc_3e_slides
作者: @Scruel Tao
第 3 章 列表简介
• 3.1 列表是什么
• 3.2 修改、添加和删除元素
• 3.3 管理列表
• 3.4 避免索引错误
• 3.5 小结
3.1 列表是什么
3.1 列表是什么
列表( list )由一系列按特定顺序排列的元素组成
3.1 列表是什么
列表( list )由一系列按特定顺序排列的元素组成
使用方括号来标识,用逗号分隔其中的元素,元素之间可以没有任何关系。
3.1 列表是什么
列表( list )由一系列按特定顺序排列的元素组成
使用方括号来标识,用逗号分隔其中的元素,元素之间可以没有任何关系。
建议给列表指定一个表示复数的名称(如 letters 、 digits )
bikes = ['trek', 'redline',
'giant']
print(bikes)
运行结果
['trek', 'redline', 'giant']
3.1.1 访问列表元素
• 索引( index ):元素在列表中的位置,用于访问列表中的元素
特别的火车头,
小心差一错误!
3.1.2 列表索引
• 索引( index ):元素在列表中的位置,用于访问列表中的元素
• 负数索引:表示列表中倒数第几个元素的位置
3.1.1 访问列表元素
• 索引( index ):元素在列表中的位置,用于访问列表中的元素
• 负数索引:表示列表中倒数第几个元素的位置
bikes = ['trek', 'redline',
'giant']
print(bikes[0])
print(bikes[2], bikes[-1])
运行结果
trek
giant giant
3.1.3 使用列表中的各个值
和其他变量一样,我们可以使用列表中的各个值
例如,在 f- 字符串中,我们可以根据列表中的值来创建消息:
bicycles = ['trek', 'cannondale', 'redline',
'specialized']
message = f"My first bicycle was a
{bicycles[0].title()}."
我们使用 bicycles[0] 的值(第一款自行车)生成了一个句子,并赋值给
print(message)
message ,程序的输出如下:
运行结果
My first bicycle was a Trek.
3.2.1 修改列表元素
要修改列表元素,我们需要指定列表名和要修改的元素的索引,再指定该索引位置的新值。
列如,我们可以修改摩托车列表中的第一个值:
motorcycles = ['honda', 'yamaha',
'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)
运行结果
['honda', 'yamaha',
'suzuki']
['ducati', 'yamaha',
3.2.2 在列表中添加元素
我们随时可以在列表中添加新元素
• lst.append(val) :在列表的末尾添加新元素。
bikes = []
bikes.append('redline')
3.2.2 在列表中添加元素
我们随时可以在列表中添加新元素
• lst.append(val) :在列表的末尾添加新元素。
• lst.insert(idx, val) :在列表的指定位置上添加新元素。
bikes = []
bikes.append('redline') 运行结果
bikes.insert(0, 'trek') ['trek',
print(bikes) 'redline']
3.2.3 从列表中删除元素
我们可以删除列表中指定索引的元素
• del lst[idx] :删除列表中指定索引的元素
bikes = ['giant', 'trek',
运行结果
'redline']
['trek',
del bikes[0]
'redline']
print(bikes)
3.2.3 从列表中删除元素
我们可以删除列表中指定索引的元素
• del lst[idx] :删除列表中指定索引的元素
• lst.pop([idx]) -> val :删除并返回列表中指定索引(默认为末尾)
的元素,弹出( pop )的值能被接着使用
bikes = ['giant', 'trek', 'redline'] 运行结果
1 popped_bike = bikes.pop(0) 2 redline
2 print(bikes.pop()) 3 ['trek']
3 print(bikes) 4 giant
4 print(popped_bike)
3.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.
3.3 管理列表:排序
我们可以通过下面的方法 / 函数来对列表排序
• lst.sort() :永久修改原列表,对其中的元素进行排序。
• sorted(lst) -> lst' :返回排序后的列表的副本。
nums = [9, 6, 1, 4, 2]
1 print(sorted(nums))
2 print(nums) # 原列表不变 运行结果
# 列表排序(默认正序) 1 [1, 2, 4, 6,
3 nums.sort() 2 9]
print(nums) 3 [9, 6, 1, 4,
# 列表排序(指定倒序) 4 2]
4 nums.sort(reverse=True) [1, 2, 4, 6,
print(nums) 9]
3.3 管理列表:反转
我们可以通过下面的方法来反转列表
• lst.reverse() :永久修改原列表,对其中的元素进行翻转。
nums = [9, 6, 1, 4, 2]
运行结果
nums.reverse() # 翻转列表
[2, 4, 1, 6,
print(nums)
9]
reverse() 方法会永久地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序:只需对列表再次调
用 reverse() 即可。
3.3 管理列表:获取长度
使用 len() 函数可以快速获悉列表的长度:
• len(lst) -> num :获取列表的元素个数。
cars = ['bmw', 'audi', 'toyota', 运行结果
'subaru'] 4
print(len(cars))
这个函数很有用,可以帮助我们明确还有多少个外星人未被消灭,确定需要管理多少项可视化
数据,计算网站有多少注册用户,等等。
3.3 管理列表:获取长度
小技巧:终端中会自动对输入的最后一行调用 print() 函数,所以如果你是在终端中尝试运行,可
以省略最后的 print() 函数:
3.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
不要大意,索引错误很常见,尤其是差一错误!
3.5 小结
• 学习了列表是什么,以及如何使用其中的元素。
• 学习了如何定义列表,如何增删元素,以及如何对列表进行永久排序和临时排序。
• 学习了如何获得列表的长度,以及如何在使用列表时避免索引错误。
在下一章中,我们将学习更多关于列表的相关知识,尤其是如何以更高效的方式处理列表元素。