CC++ & Algorithm

Python列表的创建与使用

困难3
语言版本:C++Python
概述:列表就像你的文具盒,可以放很多东西,还能按顺序找到它们。

我的第一个Python列表:像文具盒一样整理数据

列表是Python里用来存放多个数据的一种“容器”。你可以把它想象成一个多功能文具盒:里面可以同时放铅笔、橡皮、尺子、甚至小纸条,而且每样东西都有固定的位置(位置是从0开始编号的)。有了列表,我们就能把一堆相关的东西放到一起,需要时按顺序找到它们。

1. 认识列表——用方括号创建

在Python里,我们用方括号 [] 来创建一个列表,里面的东西用逗号隔开。列表里的每一项叫元素,可以是文字、数字、甚至其他列表。

# 创建一个电脑游戏列表,里面是不同游戏的名字
games = ["我的世界", "愤怒的小鸟", "植物大战僵尸"]
print(games)   # 输出:['我的世界', '愤怒的小鸟', '植物大战僵尸']

# 创建一个成绩列表,放5位同学的数学分数
scores = [95, 87, 92, 78, 88]
print(scores)  # 输出:[95, 87, 92, 78, 88]

# 列表里也可以混着放不同类型的东西(但不常用)
mixed = ["小明", 10, True]  # 字符串、整数、布尔值
print(mixed)

小贴士:列表里的元素可以是数字、字符串、布尔值,甚至其他列表。不过刚开始,我们先把同类型的数据放一起,更清晰。

2. 访问列表里的元素——下标从0开始

每个元素都有一个编号,叫做下标(也叫索引)。第一个元素的下标是0,第二个是1,依此类推。我们可以通过 列表名[下标] 来取出对应的元素。

想象一下学校放书包的储物柜:柜子编号从0开始,你想拿第3个柜子里的东西,就要输入下标2。

# 定义好朋友的姓名列表
friends = ["小红", "小刚", "小丽", "小华"]
# 取出第一个朋友(下标0)
first_friend = friends[0]   # 小红
# 取出第三个朋友(下标2)
third_friend = friends[2]   # 小丽
print("第一个朋友是:", first_friend)
print("第三个朋友是:", third_friend)

# 取倒数第一个朋友(可以用负数下标)
last_friend = friends[-1]   # 小华
print("最后一个朋友是:", last_friend)

负数下标是Python的小技巧:-1 代表最后一个元素,-2 代表倒数第二个,非常方便。

3. 修改列表里的元素——像换掉坏了的橡皮

如果觉得列表里的某个元素不合适,可以直接给它重新赋值,就像把文具盒里用旧的橡皮换成新的。

# 创建一个文具盒列表
pencil_case = ["铅笔", "橡皮", "尺子"]
print("原来的文具盒:", pencil_case)

# 把位置1(原来是橡皮)换成新橡皮
pencil_case[1] = "新橡皮"
print("换掉后的文具盒:", pencil_case)  # ['铅笔', '新橡皮', '尺子']

# 也可以把成绩列表里的第2个分数(下标1)改成100分
scores = [95, 87, 92, 78, 88]
scores[1] = 100  # 第二个同学考了100分
print("修改后的成绩:", scores)  # [95, 100, 92, 78, 88]

4. 给列表添加新元素——就像往铅笔盒里加新笔

随着学习的进行,你可能想在文具盒里加一把新尺子。Python提供了两种常用方法:

  • append(新元素):在列表末尾添加一个元素。
  • insert(下标, 新元素):在指定位置插入一个元素(后面的元素自动往后挪)。
# 先有一个零食列表
snacks = ["薯片", "巧克力", "饼干"]
print("最初的零食:", snacks)

# 在末尾加一个“棒棒糖”
snacks.append("棒棒糖")
print("加了一根棒棒糖:", snacks)

# 在第一个位置(下标0)插入“奶糖”
snacks.insert(0, "奶糖")
print("最前面加了奶糖:", snacks)  # 现在列表:['奶糖', '薯片', '巧克力', '饼干', '棒棒糖']

5. 从列表删除元素——像扔掉不想要的东西

如果某些元素不再需要,可以用 remove(具体值)pop(下标) 来删除。

  • remove(值):删除第一个匹配的元素(不知道位置时用)。
  • pop(下标):删除指定下标的元素,并返回它(知道位置时用)。
# 一个水果列表
fruits = ["苹果", "香蕉", "橙子", "香蕉", "葡萄"]
print("原始水果:", fruits)

# 删除第一个“香蕉”
fruits.remove("香蕉")
print("删掉一个香蕉后:", fruits)  # ['苹果', '橙子', '香蕉', '葡萄']

# 删除第三个元素(下标2,现在是香蕉)
removed_fruit = fruits.pop(2)
print("删掉了:", removed_fruit)   # 输出:香蕉
print("剩下的水果:", fruits)      # ['苹果', '橙子', '葡萄']

6. 看看列表有多长——用len()函数

想知道文具盒里有多少件东西?用 len() 函数可以返回列表中元素的个数。

# 班级里的小组名单
group = ["小张", "小李", "小王", "小赵"]
print("小组人数:", len(group))  # 输出:4

# 如果列表是空的呢?
empty_list = []
print("空列表的长度:", len(empty_list))  # 输出:0

常见错误(新手最容易踩的坑)

  1. 下标越界:访问不存在的下标。比如列表只有3个元素,却去取 list[3](最大是2)。
    ❌ 错误:pencil_case[3] —— 因为列表只有0,1,2三个位置,没有3。
    ✅ 正确做法:先检查 len(pencil_case),确保下标在 0长度-1 之间。

  2. 忘记用方括号:写成了圆括号 () 或花括号 {},Python会报错。
    ❌ 错误:pencil_case = ("铅笔", "橡皮") —— 这是元组,不是列表。
    ✅ 正确:用方括号 []

  3. 忘记加逗号:如果写上 ["铅笔" "橡皮"] 会报错。
    ❌ 错误:["铅笔" "橡皮"]
    ✅ 正确:每个元素之间加逗号 ["铅笔", "橡皮"]

  4. 混淆下标和值:比如想删除“橡皮”,却写成了 pencil_case.remove(1),这会尝试删除值为1的元素,而不是下标1。
    ❌ 错误:pencil_case.remove(1) —— 列表里没有元素等于1。
    ✅ 正确:用值 pencil_case.remove("橡皮") 或下标 pencil_case.pop(1)


完整可运行的代码示例:管理我的游戏收藏

下面是一个完整的小程序,展示列表的创建、访问、修改、添加、删除和长度查询,全部用中文注释,你可以直接复制到Python中运行。

# 我的游戏收藏列表
my_games = ["我的世界", "愤怒的小鸟", "植物大战僵尸"]
print("初始游戏列表:", my_games)

# 访问第一个游戏
first_game = my_games[0]
print("我最爱的第一个游戏是:", first_game)

# 修改第二个游戏(下标1)为“王者荣耀”
my_games[1] = "王者荣耀"
print("把第二个游戏换成王者荣耀后:", my_games)

# 在末尾添加一个新游戏
my_games.append("第五人格")
print("添加第五人格后:", my_games)

# 在第一个位置插入一个游戏
my_games.insert(0, "元梦之星")
print("在开头插入元梦之星后:", my_games)

# 删除第一个出现的神秘游戏(如果存在)
if "元梦之星" in my_games:
    my_games.remove("元梦之星")
    print("删除了元梦之星:", my_games)

# 删除最后一个游戏(pop不写下标默认删最后一个)
last_game = my_games.pop()
print("删除了最后一个游戏:", last_game)
print("现在剩下的游戏:", my_games)

# 游戏总数
print("我目前有", len(my_games), "个游戏")

运行这段代码,你会看到列表一步步变化,非常直观。


接下来可以学什么

学会了列表的创建与基本使用,你已经可以存放和操作一堆数据了。但列表还有很多强大的功能,比如:

  • 遍历列表:用 for 循环依次处理每个元素(比如给每个同学加分)。
  • 列表切片:一下子拿到列表中的一段(比如前3个元素)。
  • 列表排序:用 sort()sorted() 把成绩按高低排好。
  • 列表嵌套:列表里再放列表,像储物柜里的抽屉。

这些内容在更高级的课程里都会学到,快去试试吧!

例题精讲

1单选题

以下哪个选项可以正确创建一个包含整数1、2、3的列表?

Alist = [1 2 3]
Blist = [1,2,3]
Clist = (1,2,3)
Dlist = {1,2,3}
2单选题

已知列表lst = [10, 20, 30, 40],执行 lst.append(50) 后,列表的内容是什么?

A[10, 20, 30, 40, 50]
B[50, 10, 20, 30, 40]
C[10, 20, 30, 40]
D[10, 20, 30, 40, [50]]
3判断题

列表中的元素可以被修改,因此列表是可变的数据类型。

4填空题
使用列表推导式生成一个包含1到10中所有偶数的列表,请补全代码:
even_list = [x for x in range(1, 11) if ___]
5填空题
已知列表stack = [1, 2, 3],执行以下操作后,stack变为[1, 2, 3, 4],请补全代码:
stack.___(4)