修改、添加和删除元素
您创建的大多数列表都是动态的,这意味着您将构建一个列表,然后在您的程序运行过程中添加和删除元素。 例如,您可能会创建一个游戏,玩家必须在其中射击天空中的外星人。 您可以将初始的一组外星人存储在一个列表中,然后在每次击落一个外星人时从列表中删除一个外星人。 每次屏幕上出现新的外星人时,您都将其添加到列表中。 在整个游戏过程中,您的外星人列表的长度会增加和减少。
修改列表元素
修改元素的语法类似于访问列表中元素的语法。 要更改元素,请使用列表名称后跟要更改的元素的索引,然后提供您希望该项目具有的新值。 例如,假设我们有一个摩托车列表,列表中的第一项是“本田(honda)”。 我们可以在创建列表后更改第一项的值:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)
这里我们定义了列表 motorcycles
,以 'honda'
作为第一个元素。 然后我们将第一项的值更改为 'ducati'
。 输出显示第一项已更改,而列表的其余部分保持不变:
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']
您可以更改列表中任何项目的值,而不仅仅是第一项。
在列表中添加元素
出于多种原因,您可能希望向列表中添加新元素。 例如,您可能想要让新的外星人出现在游戏中,向可视化添加新数据,或者向您构建的网站添加新的注册用户。 Python 提供了几种向现有列表添加新数据的方法。
将元素追加到列表末尾
将新元素添加到列表的最简单方法是将项目追加到列表。 将项目附加到列表时,新元素将添加到列表的末尾。 使用我们在上一个示例中使用的相同列表,我们将新元素 'ducati' 添加到列表的末尾:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
这里的 append()
方法将 'ducati'
添加到列表的末尾,而不影响列表中的任何其他元素:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
append()
方法可以轻松地动态构建列表。 例如,您可以从一个空列表开始,然后使用一系列 append()
调用将项目添加到列表中。 使用空列表,将元素 "honda"
、"yamaha"
和 "suzuki"
添加到列表中:
motorcycles = []
motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')
print(motorcycles)
结果列表看起来与前面示例中的列表完全相同:
['honda', 'yamaha', 'suzuki']
以这种方式构建列表非常普遍,因为在程序运行之前,您通常不会知道用户想要存储在程序中的数据。 要让您的用户处于控制之中,首先要定义一个空列表来保存用户的值。 然后将提供的每个新值附加到您刚刚创建的列表中。
将元素插入列表
您可以使用 insert()
方法在列表的任何位置添加新元素。 您可以通过指定新元素的索引和新项目的值来执行此操作:
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)
在此示例中,我们在列表的开头插入值 "ducati"
。 insert()
方法在位置 0
处打开一个空格,并在该位置存储值 'ducati'
:
['ducati', 'honda', 'yamaha', 'suzuki']
此操作将列表中的每个其他值向右移动一个位置。
从列表中删除元素
通常,您会希望从列表中删除一个项目或一组项目。 例如,当玩家从天上击落一个外星人时,您很可能希望将其从活跃外星人列表中删除。 或者,当用户决定取消他们在您创建的 Web 应用程序上的帐户时,您需要将该用户从活跃用户列表中删除。 您可以根据项目在列表中的位置或根据其值删除项目。
使用 del 语句删除项目
如果您知道要从列表中删除的项目的位置,则可以使用 del
语句:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[0]
print(motorcycles)
这里我们使用 del
语句从摩托车列表中删除第一项 "honda"
:
['honda', 'yamaha', 'suzuki']
['yamaha', 'suzuki']
如果您知道项目的索引,则可以使用 del
语句从列表中的任何位置删除项目。 例如,以下是从列表中删除第二项 "yamaha"
的方法:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[1]
print(motorcycles)
第二辆摩托车从列表中删除:
['honda', 'yamaha', 'suzuki']
['honda', 'suzuki']
在这两个示例中,您都无法再访问在使用 del
语句后从列表中删除的值。
使用 pop() 方法删除项目
有时您会希望在从列表中删除某个项目后使用该项目的值。 例如,您可能想要获取刚刚被击落的外星人的 x
和 y
位置,以便您可以在该位置绘制爆炸。 在 Web 应用程序中,您可能希望从活动成员列表中删除用户,然后将该用户添加到非活动成员列表中。
pop()
方法删除列表中的最后一项,但它允许您在删除后使用该项目。 术语弹出来自将列表视为一堆项目并从堆栈顶部弹出一个项目。 在这个类比中,堆栈的顶部对应于列表的末尾。 让我们从摩托车列表中弹出一辆摩托车:
motorcycles = ['honda', 'yamaha', 'suzuki'] (1)
print(motorcycles)
popped_motorcycle = motorcycles.pop() (2)
print(motorcycles) (3)
print(popped_motorcycle) (4)
1 | 我们首先定义并打印列表 motorcycles。 |
2 | 然后我们从列表中弹出一个值,并将该值赋给变量 popped_motorcycle 。 |
3 | 我们打印列表以显示已从列表中删除一个值。 |
4 | 然后我们打印弹出的值以证明我们仍然可以访问被删除的值。 |
输出显示值 "suzuki" 已从列表末尾删除,现在已分配给变量 popped_motorcycle:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki
这个 pop()
方法有什么用? 想象一下,列表中的摩托车是按照我们拥有它们的时间顺序存储的。 如果是这种情况,我们可以使用 pop()
方法打印关于我们购买的最后一辆摩托车的声明:
motorcycles = ['honda', 'yamaha', 'suzuki']
last_owned = motorcycles.pop()
print(f"The last motorcycle I owned was a {last_owned.title()}.")
输出是关于我们最近拥有的摩托车的简单句子:
The last motorcycle I owned was a Suzuki.
从列表中的任何位置弹出项目
您可以使用 pop()
从列表中的任何位置删除项目,方法是在括号中包含要删除的项目的索引:
motorcycles = ['honda', 'yamaha', 'suzuki']
first_owned = motorcycles.pop(0)
print(f"The first motorcycle I owned was a {first_owned.title()}.")
我们首先弹出列表中的第一辆摩托车,然后我们打印关于那辆摩托车的消息。 输出是一个简单的句子,描述了我拥有的第一辆摩托车:
The first motorcycle I owned was a Honda.
请记住,每次使用 pop()
时,您使用的项目都不再存储在列表中。
如果你不确定是使用 del
语句还是 pop()
方法,这里有一个简单的决定方法:当你想从列表中删除一个项目而不以任何方式使用该项目时,使用 del
语句; 如果要在删除项目时使用它,请使用 pop()
方法。
按值删除项目
有时您不知道要从列表中删除的值的位置。 如果您只知道要删除的项目的值,则可以使用 remove()
方法。
例如,假设我们要从摩托车列表中删除值 "ducati":
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
motorcycles.remove('ducati')
print(motorcycles)
这里的 remove()
方法告诉 Python 找出 "ducati" 出现在列表中的位置并删除该元素:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
您还可以使用 remove()
方法来处理从列表中删除的值。 让我们删除值 'ducati'
并打印将其从列表中删除的原因:
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati'] (1)
print(motorcycles)
too_expensive = 'ducati' (2)
motorcycles.remove(too_expensive) (3)
print(motorcycles)
print(f"\nA {too_expensive.title()} is too expensive for me.") (4)
1 | 在定义列表之后, |
2 | 我们将值 'ducati' 分配给一个名为 too_expensive 的变量。 |
3 | 然后我们使用这个变量告诉 Python 从列表中删除哪个值。 |
4 | 值 'ducati' 已从列表中删除,但仍可通过变量 too_expensive 访问,这使我们能够打印一条声明,说明我们为何从摩托车列表中删除 'ducati': |
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
A Ducati is too expensive for me.
|