查看全课大纲(第 12 / 51 节)
  1. 1.Python 是什么?为什么值得学?
  2. 2.如何为 Python 编程准备一个“全家桶”环境?
  3. 3.Python 有哪几种执行方法?
  4. 4.行与缩进到底有什么用?
  5. 5.注释有什么用,怎么写?
  6. 6.变量:如何给数据起个好名字?
  7. 7.运算符的优先级和常见坑点是什么?
  8. 8.Python 中,数字和布尔值究竟有哪几种?
  9. 9.输入函数 `input()` 和文件读取 `open()` 怎么用?
  10. 10.如何将程序的结果展示给用户或保存下来?
  11. 11.CSV 文件怎么读怎么写才方便?
  12. 12.列表是什么,如何创建和访问它?
  13. 13.列表的修改操作,有哪些方法?
  14. 14.列表切片为什么能取到部分元素?排序和查找又该怎么用?
  15. 15.判断语句:如何让程序根据条件做不同的事?
  16. 16.for 循环如何遍历序列中的元素?
  17. 17.while 循环什么时候才会停?
  18. 18.while 循环的结束条件,你写对了吗?
  19. 19.循环中途想提前结束,怎么办?
  20. 20.`break` 和 `continue` 到底有什么区别?
  21. 21.列表推导式如何让代码更简洁高效?
  22. 22.字符串怎么定义、拼接和操作?
  23. 23.元组:为什么定义单个元素时要加逗号?
  24. 24.集合(set)怎么用?如何快速去重和做集合运算?
  25. 25.字典是什么,为什么比列表更方便?
  26. 26.字典的增删改查与遍历,如何避免 KeyError?
  27. 27.函数里的变量,为什么有的能用有的不能用?
  28. 28.在函数内部修改全局变量,为什么有时不生效?
  29. 29.函数里能修改全局变量吗?返回值怎么用?
  30. 30.匿名函数:如何用 lambda 快速定义简单函数?
  31. 31.面向对象编程是什么,为什么需要它?
  32. 32.类中的方法和属性到底怎么定义和使用?
  33. 33.如何控制对对象内部属性和方法的访问?
  34. 34.异常发生时,程序会怎样继续执行?
  35. 35.如何组织代码:包和模块
  36. 36.`if __name__ == '__main__'` 到底有什么用?
  37. 37.如何用 IDE 的 Debug 功能排查程序错误?
  38. 38.Matplotlib 绘图的第一步该做什么?
  39. 39.Figure 是什么,如何设置图形尺寸?
  40. 40.如何自定义 Matplotlib 的坐标轴?
  41. 41.如何为图表添加图例,让不同曲线一目了然?
  42. 42.饼图怎么画才能直观展示数据占比?
  43. 43.如何用 Matplotlib 绘制散点图?
  44. 44.柱状图怎么画?
  45. 45.如何使用 Matplotlib 绘制等高线图?
  46. 46.如何在 Matplotlib 中绘制子图?
  47. 47.zip 函数如何把多个列表“打包”在一起?
  48. 48.如何给可迭代对象加上索引?
  49. 49.random 模块如何生成随机数?
  50. 50.math 模块怎么用?
  51. 51.Counter 如何快速统计元素出现次数?

列表是什么,如何创建和访问它?

约 9 分钟

小象实战讲义 · Python 编程从入门到实践

列表是 Python 中最基础、最常用的数据结构之一。学完本节,你将能理解列表的概念,掌握如何创建列表、访问和修改其中的元素,并能使用循环来遍历列表。这是学习后续更复杂数据结构(如字典、元组)和控制流(如for循环)的重要基础。

💡 核心导读

  • 列表是什么:一个可以存储多个元素(类型可不同)的有序集合。
  • 如何创建:使用方括号 [] 将元素括起来,元素间用逗号分隔。
  • 如何访问:通过下标(索引) 访问,下标从 0 开始。
  • 如何修改:通过下标直接赋值,即可修改列表中指定位置的元素。
  • 如何遍历:使用 for 循环可以逐个访问列表中的每个元素。

列表的定义与创建

列表(List)是 Python 中用于存储一系列数据的有序集合。它的核心特点是:

  1. 可以容纳多个元素。
  2. 元素可以是任意类型,例如整数、字符串,甚至其他列表。
  3. 元素之间保持顺序,即你放入元素的顺序就是它们存储的顺序。

创建列表的语法非常简单:使用一对方括号 [],将元素放入其中,元素之间用逗号 , 分隔。

# 创建一个包含三个字符串的列表
name_list = ["zhangsan", "lisi", "wangwu"]
print("字符串列表:", name_list)

# 列表中的元素类型可以不同,这在 Python 中是允许的
mixed_list = [100, "hello", 3.14]
print("混合类型列表:", mixed_list)
字符串列表: ['zhangsan', 'lisi', 'wangwu']
混合类型列表: [100, 'hello', 3.14]

列表的访问与修改

列表中的每个元素都有一个唯一的编号,称为下标或索引。这个编号从 0 开始,依次递增。

通过下标访问元素

你可以通过 列表名[下标] 的形式来获取列表中对应位置的元素。

name_list = ["zhangsan", "lisi", "wangwu"]

# 访问第一个元素(下标为0)
first_person = name_list[0]
print("第一个元素是:", first_person)

# 访问第二个元素(下标为1)
second_person = name_list[1]
print("第二个元素是:", second_person)

# 列表是可变类型:通过下标赋值即可修改元素
print("修改前的列表:", name_list)
name_list[0] = "xiaobai"
print("修改后的列表:", name_list)
第一个元素是: zhangsan
第二个元素是: lisi
修改前的列表: ['zhangsan', 'lisi', 'wangwu']
修改后的列表: ['xiaobai', 'lisi', 'wangwu']

遍历列表

当我们需要处理列表中的每一个元素时,可以使用 for 循环进行遍历。

方法一:直接遍历元素

这是最常用的方式,for 循环会依次将列表中的每个元素赋值给一个临时变量。

name_list = ["zhangsan", "lisi", "wangwu"]

print("直接遍历元素:")
for item in name_list:
    print(item)

# 方法二:结合 range() 和 len() 通过下标遍历
# len(列表) 返回元素个数;range(n) 生成 0 到 n-1 的整数序列
print("通过下标遍历:")
for i in range(len(name_list)):
    print("下标 {} 对应的元素是:{}".format(i, name_list[i]))
直接遍历元素:
zhangsan
lisi
wangwu
通过下标遍历:
下标 0 对应的元素是:zhangsan
下标 1 对应的元素是:lisi
下标 2 对应的元素是:wangwu

嵌套列表

列表的元素本身也可以是列表,这就形成了嵌套列表,或称“列表的列表”。这种结构常用于表示二维数据,比如多人的多项成绩。

# 一个嵌套列表,外层列表包含3个元素,每个元素又是一个包含3个元素的列表
# 分别表示:姓名、科目1成绩、科目2成绩
scores = [
    ["zhangsan", 92, 82],
    ["lisi", 82, 78],
    ["wangwu", 83, 89]
]
print("嵌套列表:", scores)

print("遍历嵌套列表(打印内层列表):")
for person_scores in scores:  # 外层循环,遍历每个人
    print(person_scores)

print("遍历嵌套列表(打印每个具体值):")
for person_scores in scores:  # 外层循环,遍历每个人
    for score in person_scores:  # 内层循环,遍历每个人的成绩列表
        print(score)  # 每个值单独打印一行
嵌套列表: [['zhangsan', 92, 82], ['lisi', 82, 78], ['wangwu', 83, 89]]
遍历嵌套列表(打印内层列表):
['zhangsan', 92, 82]
['lisi', 82, 78]
['wangwu', 83, 89]
遍历嵌套列表(打印每个具体值):
zhangsan
92
82
lisi
82
78
wangwu
83
89

📝 动手练一练

  1. 创建一个列表 fruits,包含 "apple", "banana", "cherry" 三个元素。然后编写代码,将列表中的 "banana" 修改为 "blueberry",并打印修改后的整个列表。
  2. 给定一个嵌套列表 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],请使用双重循环打印出其中的每一个数字(每个数字单独一行)。
👉 点击查看参考答案

练习1:修改列表元素 思路:先创建列表,然后通过下标找到 "banana"(它是第二个元素,下标为1),最后赋值修改。

练习2:遍历嵌套列表 思路:外层循环遍历 matrix 中的每一个子列表,内层循环遍历子列表中的每一个数字并打印。

fruits = ["apple", "banana", "cherry"]
print("修改前:", fruits)

fruits[1] = "blueberry"
print("修改后:", fruits)

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for row in matrix:      # row 依次为 [1,2,3], [4,5,6], [7,8,9]
    for number in row:  # 遍历当前行中的每个数字
        print(number)
修改前: ['apple', 'banana', 'cherry']
修改后: ['apple', 'blueberry', 'cherry']
1
2
3
4
5
6
7
8
9

常见错误

错误写法现象或报错原因正确写法
print(name_list[3])
name_list = ["a", "b", "c"]
IndexError: list index out of range列表只有3个元素,下标范围是0-2。访问下标3(第4个元素)超出了列表的边界。确保下标在 0 到 len(列表)-1 的范围内。
name_list = [zhangsan, lisi]NameError: name 'zhangsan' is not defined创建列表时,如果元素是字符串,必须用引号(单引号或双引号)括起来,否则Python会将其视为变量名。name_list = ["zhangsan", "lisi"]
name_list[0] = "new"
name_list = ("a", "b")
TypeError: 'tuple' object does not support item assignment这里 name_list 被错误地定义为了元组 ( ),元组是不可变的,不能修改其中的元素。使用方括号 [ ] 定义列表:name_list = ["a", "b"]

小结

  1. 列表是一个有序、可变的集合,用方括号 [] 定义,元素间用逗号分隔。
  2. 列表元素可以是任意类型,且类型可以混合。
  3. 通过下标(索引) 访问和修改列表元素,下标从 0 开始。
  4. 使用 for 元素 in 列表: 循环可以直接遍历列表中的每一个元素。
  5. 使用 for i in range(len(列表)): 循环可以通过下标遍历列表,便于同时获取元素和其位置。
  6. 列表的元素可以是另一个列表,形成嵌套列表,遍历嵌套列表需要使用多重循环。

📋 行动清单

  • 在代码编辑器中,亲手输入本节的所有示例代码并运行,观察输出结果。
  • 尝试创建一个包含你本周计划的列表(比如 ["学习", "运动", "阅读"]),并练习修改其中一项计划。
  • 将“嵌套列表”部分的成绩示例,改成存储你和你两位朋友的信息(如 [姓名, 年龄, 城市]),并编写代码打印出所有人的城市。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第1章代码包:列表-定义及访问_样例代码(含1 个 Notebook)
    ZIP · 540B
    下载