【笔记】Python | 03 | 列表 | 3.2 修改、添加和删除元素
修改、添加和删除元素
我们会经常添加、修改、删除列表里的元素。在程序运行期间,列表的长度(也就是列表中元素的个数)将不断变化。
修改列表元素
修改元素与访问元素的方法类似,通过索引先指定要修改的元素,然后再赋新的值给元素。
motorcycles = ['honda', 'yamaha', 'suzuki']
# 打印这个列表
print(motorcycles)
# 将第一个元素修改为'ducati'
motorcycles[0] = 'ducati'
print(motorcycles)
输出结果:
>>>
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']
在列表中添加元素
有时需要往列表中添加元素
在列表末尾添加元素
最常见的就是在列表末尾添加元素,使用append()
方法。append是附加、贴上、盖章的意思。
motorcycles = ['honda', 'yamaha', 'suzuki']
# 在末尾添加元素ducati
motorcycles.append('ducati')
print(motorcycles)
输出结果:
>>> ['honda', 'yamaha', 'suzuki', 'ducati']
我们可以创建一个空列表,然后不断调用append()
,添加多个元素。
motorcycles = []
motorcycles.append('bmw')
motorcycles.append('aima')
motorcycles.append('9bot')
print(motorcycles)
输出结果:
>>> ['bmw', 'aima', '9bot']
在列表中插入元素
我们使用insert()
在列表任何位置插入元素,使用insert()
需要指定新元素的索引和值。
motorcycles = ['honda', 'yamaha', 'suzuki']
# 在索引0处添加空间,将'ducati'存储在此
motorcycles.insert(0, 'ducati')
输出结果:
>>> ['ducati', 'honda', 'yamaha', 'suzuki']
使用insert()
会使既有的元素右移一个位置。
从列表中删除元素
删除元素有几种办法。
使用del()
删除元素
使用del()
删除元素时,需要知道元素的索引。
motorcycles = ['honda', 'yamaha', 'suzuki']
# 删除0位置的元素
del motorcycles[0]
print(motorcycles)
输出结果:
>>> ['yamaha', 'suzuki']
使用pop()
删除元素
有时我们需要删除元素,但是还要使用这个被删除的元素的值。比如在游戏中,我们击杀了一个敌人,就需要将这个敌人从敌人列表中删掉,但同时我们需要获取敌人的位置信息,从而在相应的位置添加动画效果。
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
popped_motorcycles = motorcycles.pop()
print(motorcycles)
print(popped_motorcycles)
输出结果:
>>>
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki
pop()
(弹出)会删掉列表最后的元素。可以这么理解,列表是一个栈,删除末尾元素就是去掉栈顶的元素。
弹出列表中任意位置的元素
使用pop()
弹出任意位置元素,只需要添加对应的索引
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
first_owned = motorcycles.pop(0)
print("The first motorcycle I owned was a " + first_owned.title() + ".")
输出结果:
>>>
['honda', 'yamaha', 'suzuki']
The first motorcycle I owned was a Honda.
根据值删除元素
有时候我们不知道元素的索引,但只要知道元素的值,就可以使用remove()
删除之
motorcycles = ['ducati', 'honda', 'yamaha', 'suzuki']
print(motorcycles)
too_expensive = 'ducati'
motorcycles.remove('ducati')
print(motorcycles)
print("\nA " + too_expensive.title() + "is too expensive for me.")
输出结果:
>>>
['ducati', 'honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki']
A Ducatiis too expensive for me.
remove()
只能删除第一个值,如果有多个值需要循环处理。
练习题
3-4 嘉宾名单
如果你可以邀请任何一个人共进晚餐(无论是在世的还是已故的),你会邀请哪些人?创建一个列表,其中包含至少3个你想邀请的人。然后,使用这个列表打印消息,邀请这些人来与你共进晚餐。
guests_name = ['grace', 'jersey', 'einstein']
print("I want to invite " + guests_name[0].title() + "to dinner tonight.")
print("I want to invite " + guests_name[1].title() + "to dinner tonight.")
print("I want to invite " + guests_name[2].title() + "to dinner tonight.")
3-5 修改嘉宾名单
你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。
- 以3-4的程序为基础,在末尾打印一句话,指出哪位嘉宾无法赴约
- 修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名
- 再一次打印消息,向名单中的每位嘉宾发出邀请
guests_name = ['grace', 'jersey', 'einstein']
print("I want to invite " + guests_name[0].title() + "to dinner tonight.")
print("I want to invite " + guests_name[1].title() + "to dinner tonight.")
print("I want to invite " + guests_name[2].title() + "to dinner tonight.")
print(guests_name[0].title() + " will not come for dinner.")
guests_name[0] = 'lily'
print("I want to invite " + guests_name[0].title() + "to dinner tonight.")
print("I want to invite " + guests_name[1].title() + "to dinner tonight.")
print("I want to invite " + guests_name[2].title() + "to dinner tonight.")
3-6 添加嘉宾
你刚找到一个更大的餐桌,可容纳更多的嘉宾,请想想你还想邀请哪三位嘉宾。
- 以3-4和3-5为基础,在末尾添加一条
print
语句,指出找到了更大的餐桌 - 使用
insert()
语句将嘉宾添加到开头 - 使用
insert()
语句将嘉宾添加到中间 - 使用
append()
语句将最后一位嘉宾添加到末尾 - 打印一系列语句,发出邀请
print("\nI have bought a bigger table.")
guests_name.insert(0, 'alex')
guests_name.insert(2, 'michael')
guests_name.append('tom')
print("I want to invite " + guests_name[0].title() + " to dinner tonight.")
print("I want to invite " + guests_name[1].title() + " to dinner tonight.")
print("I want to invite " + guests_name[2].title() + " to dinner tonight.")
print("I want to invite " + guests_name[3].title() + " to dinner tonight.")
print("I want to invite " + guests_name[4].title() + " to dinner tonight.")
print("I want to invite " + guests_name[5].title() + " to dinner tonight.")
3-7 缩减名单
你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。
- 以3-6为基础,在末尾添加一行代码,告知只能邀请两位嘉宾
- 使用
pop()
不断删除名单中的嘉宾,直到只有两位为止。每次删除都打印一条消息,让嘉宾知道你很抱歉,无法邀请他来 - 对于余下的嘉宾都打印消息,指出他仍在邀请之列
- 使用
del()
将最后两位嘉宾移出名单,打印空名单以确认都删除掉
print("I'm sorry to tell you that the new table I bought hasn't been delivered yet, \
I'm afraid I can't invite you to dinner tonight.")
print(guests_name)
guest_deleted = guests_name.pop()
print("To " + guest_deleted.title() + ": I'm so sorry to tell you that \
I can't invite you to dinner tonight.")
guest_deleted = guests_name.pop()
print("To " + guest_deleted.title() + ": I'm so sorry to tell you that \
I can't invite you to dinner tonight.")
guest_deleted = guests_name.pop()
print("To " + guest_deleted.title() + ": I'm so sorry to tell you that \
I can't invite you to dinner tonight.")
guest_deleted = guests_name.pop()
print("To " + guest_deleted.title() + ": I'm so sorry to tell you that \
I can't invite you to dinner tonight.")
print("To " + guests_name[0].title() + ": I'd like to invite you to \
dinner tonight.")
print(guests_name)
print("To " + guests_name[1].title() + ": I'd like to invite you to \
dinner tonight.")
print(guests_name)
del guests_name[0]
del guests_name[0]
print(guests_name)