当前位置:首页>python>《Python 从入门到精通》032 | 列表的增删改查:写程序最常见的操作

《Python 从入门到精通》032 | 列表的增删改查:写程序最常见的操作

  • 2026-10-11 08:30:09
《Python 从入门到精通》032 | 列表的增删改查:写程序最常见的操作

上一篇你已经认识了列表。

你知道列表可以装一组有顺序的数据。 也知道可以通过下标,把第几个元素单独取出来。

但如果列表只能“看”,那它其实还不够实用。 真实写程序时,你经常会遇到这些需求:

新来一个学生,要把名字加进去 某个商品下架了,要把它删掉 一个分数录错了,要把它改掉 想看看某个名字在不在列表里 想知道某个元素出现了几次

你会发现,这些操作特别像数据库里最常见的四件事:

增 删 改 查

而列表,恰恰就特别擅长做这些事情。

这一篇,我们就把列表最常见、最实用的操作真正讲透。 你学完以后,列表就不再只是“能装数据”的盒子了。 它会开始真正变成你能随手操作的数据容器。

一、先理解什么叫增删改查

先用最直白的话说。

增,就是往列表里加新元素。 删,就是把列表里的某些元素去掉。 改,就是把某个位置上的旧元素替换成新元素。 查,就是看列表里有什么、某个元素在不在、出现了几次、在哪个位置。

比如一个学生名单:

students = ['小明', '小红', '小刚']

新增一个学生,就是把 小丽 加进去。 删除一个学生,就是把 小刚 去掉。 修改一个名字,就是把 小红 改成 小美。 查询,就是看 小明 在不在、名单有几个人、某个名字在哪个位置。

所以你现在可以先把这篇文章理解成:

学会怎么真正“操作”列表。

二、先从新增开始:append()

列表新增元素时,最常见的一个方法就是:

append()

它的作用是:

把一个元素追加到列表最后面。

来看例子:

students = ['小明', '小红', '小刚']students.append('小丽')print(students)

输出结果会是:

['小明', '小红', '小刚', '小丽']

你可以看到,小丽 被加到了列表最后面。

所以 append() 的特点特别明确:

在尾部新增 一次加一个元素

这也是它为什么特别常用。 因为现实里很多新增操作,本来就是“加到最后”。

三、append() 是现在最值得先练熟的新增方式

比如商品列表:

products = ['鼠标', '键盘', '耳机']products.append('显示器')print(products)

再比如成绩列表:

scores = [88, 92, 75]scores.append(99)print(scores)

再比如城市列表:

cities = ['北京', '上海']cities.append('广州')print(cities)

你会发现,写法都特别统一。

这也是为什么我说,列表新增里你最先要练熟的,就是 append()。 因为它简单、直观、出现频率非常高。

四、自己动手做一个 append 练习

下面这段代码你最好现在就敲一遍。

fruits = ['苹果', '香蕉', '橙子']fruits.append('葡萄')print(fruits)

然后你自己再改一下。

先追加一个水果:

fruits.append('西瓜')

再追加一个水果:

fruits.append('草莓')

完整一点可以写成:

fruits = ['苹果', '香蕉', '橙子']fruits.append('葡萄')fruits.append('西瓜')fruits.append('草莓')print(fruits)

这个练习特别有用, 因为它会让你很直观地看到:

列表不是固定死的 它是真的可以不断往后加内容

五、如果我不想加在最后,而是想插到中间,怎么办

这时候就要用另一个方法:

insert()

它的作用是:

在指定位置插入一个元素。

基本写法是:

列表名.insert(位置, 元素)

比如:

students = ['小明', '小红', '小刚']students.insert(1, '小丽')print(students)

输出结果会是:

['小明', '小丽', '小红', '小刚']

你可以看到,小丽 被插进了下标 1 的位置。 原来后面的元素都顺着往后挪了。

所以 insert() 的特点是:

指定位置新增 不是只能加在最后

六、append() 和 insert() 的区别,一定要分清

这个区别非常实用。

append() 是:

加到最后

比如:

students.append('小丽')

insert() 是:

加到指定位置

比如:

students.insert(1, '小丽')

所以以后你遇到新增操作时,可以先问自己一句:

我是只想加到最后 还是要放到某个指定位置

如果只是尾部追加,append() 最自然。 如果必须插到中间,insert() 更合适。

七、再认识一个批量新增:extend()

如果你想一次加多个元素, 还可以用:

extend()

它的作用是:

把另一组元素追加到当前列表末尾。

比如:

students = ['小明', '小红']new_students = ['小刚', '小丽']students.extend(new_students)print(students)

输出结果:

['小明', '小红', '小刚', '小丽']

这个方法特别适合“合并两组数据”。

比如两组商品名单、两组姓名、两组分数。 只要你想把一整组元素接到后面,extend() 就很合适。

对当前阶段来说,你先至少记住这三个新增方法:

append()加一个到最后

insert()加一个到指定位置

extend()加一整组到最后

八、接下来讲删除:remove()

删除列表元素时,最常见的一个方法是:

remove()

它的作用是:

按元素的值删除。

来看例子:

students = ['小明', '小红', '小刚']students.remove('小红')print(students)

输出结果会是:

['小明', '小刚']

这里不是按位置删, 而是根据值删掉了 '小红'。

所以 remove() 特别适合这种场景:

我知道要删谁 但我不一定关心它具体下标是多少

九、remove() 有一个特别重要的特点

它删除的是“第一个匹配到的值”。

比如:

names = ['小明', '小红', '小明', '小刚']names.remove('小明')print(names)

输出会是:

['小红', '小明', '小刚']

你会发现,它只删掉了前面那个 小明。 后面的同名元素还在。

所以以后你要记住:

remove() 删除的是第一个匹配项 不是把所有同名元素一次删光

这个细节很重要。

十、按位置删除:pop()

有时候你不是知道“删谁”, 而是知道“删第几个”。

这时候很适合用:

pop()

它的作用是:

按下标删除元素。

比如:

students = ['小明', '小红', '小刚']students.pop(1)print(students)

输出:

['小明', '小刚']

因为下标 1 的元素就是 小红。

所以:

remove() 更像是按值删pop() 更像是按位置删

这个区别一定要分清。

十一、pop() 还有一个特别实用的地方

如果你不写下标,它默认删除最后一个元素。

比如:

students = ['小明', '小红', '小刚']students.pop()print(students)

输出会是:

['小明', '小红']

也就是说,它把最后一个 小刚 删掉了。

所以 pop() 很适合这种场景:

删最后一个 或者删某个已知下标位置的元素

这在很多程序里都很常见。

十二、del 也能删,而且很直接

除了方法以外,Python 还有一个关键字:

del

它也能删除列表里的某个位置。

比如:

students = ['小明', '小红', '小刚']del students[1]print(students)

输出:

['小明', '小刚']

效果和 pop(1) 有点像。

对当前阶段来说,你可以先这样理解:

del 列表[下标]也能按位置删

所以现在删除列表,你已经有几种方式了:

remove(值)按值删

pop(下标)按位置删

pop()删最后一个

del 列表[下标]也是按位置删

十三、清空整个列表:clear()

如果你想把列表里的所有元素一次清空, 可以用:

clear()

比如:

students = ['小明', '小红', '小刚']students.clear()print(students)

输出结果:

[]

也就是空列表。

这个方法特别适合“全部删掉重新来”的场景。 比如购物车清空、临时数据重置、缓存列表重置等。

十四、删除部分现在先记一个思路就够了

当前阶段你不用死记所有删除方式的细微差别, 但至少要形成下面这个感觉:

知道值,用 remove()知道位置,用 pop() 或 del想删最后一个,用 pop()想全清空,用 clear()

这个框架你先记住, 后面越写越多,自然会更熟。

十五、接下来讲修改:直接通过下标赋值

列表元素不是固定死的。 你完全可以把某个位置上的旧值换成新值。

最直接的写法就是:

列表名[下标] = 新值

比如:

students = ['小明', '小红', '小刚']students[1] = '小美'print(students)

输出结果会是:

['小明', '小美', '小刚']

这里原来下标 1 的元素是 小红, 现在被改成了 小美。

这就是列表修改最基础、最重要的方式。

十六、修改操作特别像“定位到某个格子,再把内容替换掉”

你可以把列表想成一个有很多格子的收纳盒。

比如:

scores = [88, 92, 75]

下标 0 放 88 下标 1 放 92 下标 2 放 75

如果现在分数录错了, 想把第二个分数改成 95:

scores[1] = 95print(scores)

输出:

[88, 95, 75]

这就是“修改”的本质。

不是新增 不是删除 而是原位置不变,内容换掉

十七、自己动手做一个修改练习

下面这个练习特别适合现在做。

cities = ['北京', '上海', '广州']cities[2] = '深圳'print(cities)

输出:

['北京', '上海', '深圳']

然后你自己再试一个:

cities[0] = '杭州'print(cities)

这样你会更明显地感受到:

列表里的元素不是不可变的 它是可以按位置直接改掉的

十八、接下来讲查询:最常见的是看某个元素在不在

比如你有一个学生名单:

students = ['小明', '小红', '小刚']

现在你想知道:

小红 在不在

最简单的方法就是:

print('小红'in students)

输出:

True

如果判断一个不存在的人:

print('小丽'in students)

输出:

False

这就是最基础的查询方式之一。

你也可以配合 if 一起写:

if'小红'in students:    print('名单里有小红')

这在真实程序里非常常见。

十九、查询某个元素出现了几次:count()

比如:

names = ['小明', '小红', '小明', '小刚']print(names.count('小明'))

输出结果会是:

2

也就是说,小明 一共出现了 2 次。

这个方法特别适合做简单统计。

比如:

某商品在购物车里出现了几次 某个名字在名单里重复了几次 某个分数在列表里有几个

它的用法很直观,也很好记。

二十、查询某个元素第一次出现的位置:index()

如果你不只是想知道在不在, 还想知道它第一次出现在哪个位置, 可以用:

index()

比如:

students = ['小明', '小红', '小刚']print(students.index('小红'))

输出结果:

1

因为 小红 第一次出现的位置就是下标 1。

如果列表里有重复值,比如:

names = ['小明', '小红', '小明', '小刚']print(names.index('小明'))

结果会是:

0

因为 index() 返回的是第一次出现的位置。

二十一、查询时别忘了 len() 也特别常用

虽然严格说,len() 不只是列表专用。 但查询列表时,它非常高频。

它的作用是:

看列表里一共有多少个元素。

比如:

students = ['小明', '小红', '小刚']print(len(students))

输出结果是:

3

这个功能在很多程序里都会用到。

比如:

统计人数 统计商品数量 判断列表是不是空 做编号输出

所以到现在为止,列表查询阶段,你至少要先熟这几个:

in看在不在

count()看出现几次

index()看第一次出现的位置

len()看一共有几个元素

二十二、把增删改查放在一起看一遍

来看一个非常典型的完整练习:

students = ['小明', '小红', '小刚']students.append('小丽')print('新增后:', students)students.remove('小红')print('删除后:', students)students[1] = '小强'print('修改后:', students)print('小明在不在:', '小明'in students)print('列表长度:', len(students))

这个例子非常有代表性。 因为它已经把一轮最常见的列表操作全串起来了。

你跑一遍以后,会特别有感觉:

列表不是静态数据 它是真的会随着程序运行不断变化

二十三、列表的增删改查,特别适合配合流程控制一起用

比如:

如果名单里没有某人,就新增进去:

students = ['小明', '小红']if'小刚'notin students:    students.append('小刚')print(students)

如果某商品存在,就删除它:

products = ['鼠标', '键盘', '耳机']if'键盘'in products:    products.remove('键盘')print(products)

如果第一个分数低于 60,就改成 60:

scores = [55, 88, 92]if scores[0] < 60:    scores[0] = 60print(scores)

你会发现, 一旦列表操作和 if 结合起来,程序就开始有“业务逻辑”的感觉了。

二十四、新手最容易犯的几个列表增删改查错误

第一个错误,把 append() 和 insert() 混了。

一个是加到最后, 一个是加到指定位置。

第二个错误,用 remove() 时以为会删掉所有同名元素。

不是。 它默认只删第一个匹配项。

第三个错误,用下标修改时,把第一个元素写成下标 1。

一定记住: 第一个元素是下标 0。

第四个错误,取不存在的位置,或者删不存在的位置,导致报错。

这通常说明你没有先搞清楚列表有几个元素。

第五个错误,只会整体打印列表,不会查、不敢改。

这一点一定要尽早突破。 列表真正的价值,不在于“看见它”,而在于“操作它”。

二十五、今天一定要亲手完成的 5 个练习

第一个,新增练习。

fruits = ['苹果', '香蕉']fruits.append('橙子')print(fruits)

第二个,删除练习。

students = ['小明', '小红', '小刚']students.remove('小红')print(students)

第三个,修改练习。

scores = [88, 92, 75]scores[2] = 80print(scores)

第四个,查询练习。

cities = ['北京', '上海', '广州']print('上海'in cities)print(cities.index('广州'))print(len(cities))

第五个,综合练习。

products = ['鼠标', '键盘']products.append('耳机')products[0] = '无线鼠标'if'键盘'in products:    products.remove('键盘')print(products)

这 5 个练习特别适合当前阶段, 因为它们把最常见的增删改查都覆盖到了。

二十六、再做一个更像样的小案例

下面这个案例很适合拿来做今天的收尾。

需求:

准备一个购物车列表。 先添加商品,再删除一个商品,再修改一个商品名称,最后查询某个商品是否存在,并输出购物车总数量。

代码如下:

cart = ['鼠标', '键盘', '耳机']cart.append('显示器')print('添加商品后:', cart)cart.remove('键盘')print('删除商品后:', cart)cart[0] = '无线鼠标'print('修改商品后:', cart)print('耳机是否存在:', '耳机'in cart)print('购物车商品总数:', len(cart))

这个案例虽然不大, 但已经非常像真实程序里的数据处理过程了。

你跑完以后,还可以自己升级一下:

再加一个商品 再删除最后一个 再判断某个不存在的商品 再统计列表长度

只要你自己愿意多改两步, 这一章就会掌握得很扎实。

二十七、写在最后

列表这一部分,真正的关键转变是:

你不再只是“看一个列表”, 而是开始“操作一个列表”。

这一步特别重要。

因为现实里的数据,几乎从来都不是固定死在那里等你看。 它们会新增、会删除、会修改、会被查询。 程序真正有价值的地方,恰恰就是帮你处理这些变化。

所以这篇文章里你学的,不只是几个方法名。 你学的是:

怎么让一组数据跟着程序逻辑真正动起来

这对后面学切片、遍历统计、排序、字典、集合,都会有直接帮助。

本文小结

列表的增删改查,是写程序时最常见的一组操作。 新增常用 append()、insert()、extend()。 删除常用 remove()、pop()、del、clear()。 修改最常见的方式是通过下标直接赋值。 查询常用 in、count()、index()、len()。 学习列表最重要的,不只是认识方法,而是知道什么时候该新增、什么时候该删除、什么时候该修改、什么时候该查询。

下篇预告

第 33 篇,我们继续把列表真正用深一点。

列表切片:一行代码处理一段数据

到那一篇,你会发现:列表不只是能取一个元素,还能一次取出一整段数据。

最新文章

随机文章