文章目录
列表
何为列表?
列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。
在Python中,我们用方括号[]
来表示列表,并用逗号来分隔其中的元素。
例如:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
运行程序得:
['trek', 'cannondale', 'redline', 'specialized']
访问列表函数
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。
例如:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
运行程序得:
trek
我们还可以来结合第二章刚学的title()
来让首字母大写
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0].title())
运行程序得:
Trek
注意:索引是从0开始,而不是从1开始
-1意思是让Python返回到列表最后一个列表元素,通俗来说就是倒数第一个,那么-2就是返回倒数第二个列表元素,以此类推
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
print(bicycles[1])
print(bicycles[-1])
运行程序得:
trek
cannondale
redline
下面我们来学一学使用变量中的各个值
使用变量中的各个值
可像使用其他变量一样使用列表中的各个值。
例如:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
message = "My first bicycle was a " + bicycles[0].title() + "."
print(message)
运行程序得:
My first bicycle was a Trek.
小插曲
现在我们来动手试试吧,练习一下刚才所学的东西
1.将一些朋友的姓名存储在一个列表中,并将其命名为 names 。依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来
2.继续使用练习 3-1 中的列表,但不打印每个朋友的姓名,而为每人打印一条消息。每条消息都包含相同的问候语,但抬头为相应朋友的姓名
3.想想你喜欢的通勤方式,如骑摩托车或开汽车,并创建一个包含
多种通勤方式的列表。根据该列表打印一系列有关这些通勤方式的宣言,如“I would like to own a Honda motorcycle”。
元素的增、添、改
修改元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
motorcycles[2] = 'honda'
print(motorcycles)
运行结果:
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'honda']
由此可见,在第四列的时候,就把honda改为ducati
添加元素
append()
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
运行结果:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
方法
append()
将元素‘ducati’添加到了列表末尾,我们还可以创建一个空列表,然后用append()
来添加元素
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', 'honda', 'yamaha', 'suzuki']
由此可见,在honda的前面加入了ducati
从列表中删除元素
使用del语句删除元素
del
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[0]
print(motorcycles)
运行结果:
['honda', 'yamaha', 'suzuki']
['yamaha', 'suzuki']
此时我们已经看到suzuki已经被删除了
使用方法pop()删除元素
方法pop()
可删除列表末尾的元素,并让你能够接着使用它。
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle)
运行结果:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki
pop()
用法多用于指定
motorcycles = ['honda', 'yamaha', 'suzuki']
last_owned = motorcycles.pop()
print("The last motorcycle I owned was a " + last_owned.title() + ".")
运行结果:
The last motorcycle I owned was a Suzuki.
直接弹出列表中任何位置处的元素
motorcycles = ['honda', 'yamaha', 'suzuki']
first_owned = motorcycles.pop(0)
print(motorcysles)
print('The first motorcycle I owned was a ' + first_owned.title() + '.')
运行结果:
['yamaha', 'suzuki']
The first motorcycle I owned was a Honda.
此时我们弹出了的元素就不在列表中了
那么我们什么时候使用pop()呢,又什么时候使用del()呢?
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用 del 语句;如果你要在删除元素后还能继续使用它,就使用方法 pop() 。
根据值删除元素
假设你不知道元素的位置,但是知道要删除元素的值,那么可以使用remove()
例如现在我想从一个列表里面删除ducati
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
motorcycles.remove('ducati')
print(motorcycles)
运行结果:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
此时我们就将
ducati
删除掉了
我们还可以将值
ducati
存储到变量中,然后我们使用这个变量来告诉python将这个值从列表中删除
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
too_expensive = 'ducati'
motorcycles.remove(too_expensive)
print(motorcycles)
print("\nA " + too_expensive.title() + " is too expensive for me.")
运行结果:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
A Ducati is too expensive for me.
小插曲
现在我们来动手试试吧,练习一下刚才所学的东西
1.如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?请创建一个列表,其中包含至少 3 个你想邀请的人;然后,使用这个列表打印消息,邀请这些人来与你共进晚餐。
2.刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。
- 以完成上一题时编写的程序为基础,在程序末尾添加一条 print 语句,指出哪位嘉宾无法赴约。
- 修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。
- 再次打印一系列消息,向名单中的每位嘉宾发出邀请。
3.你刚找到了一个更大的餐桌,可容纳更多的嘉宾。请想想你还想邀请哪三位嘉宾。
- 以完成上面第一题编写的程序为基础,在程序末尾添加一条 print 语
句,指出你找到了一个更大的餐桌。 - 使用 insert() 将一位新嘉宾添加到名单开头。
- 使用 insert() 将另一位新嘉宾添加到名单中间。
- 使用 append() 将最后一位新嘉宾添加到名单末尾。
- 打印一系列消息,向名单中的每位嘉宾发出邀请。
4.你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。
- 以完成上一题(第三题)时编写的程序为基础,在程序末尾添加一行代码,打印一条你只能邀请两位嘉宾共进晚餐的消息。
- 使用 pop() 不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进晚餐。
- 对于余下的两位嘉宾中的每一位,都打印一条消息,指出他依然在受邀人之列。
- 使用 del 将最后两位嘉宾从名单中删除,让名单变成空的。打印该名单,核实程序结束时名单确实是空的。
组织列表
永久性排序
sort()
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
运行程序得:
['audi', 'bmw', 'subaru', 'toyota']
现在我们就看出来,将原有的排序按照a-z字母顺序进行排序
其实我们还可以按照a-z字母逆序进行排序
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
运行程序得:
['toyota', 'subaru', 'bmw', 'audi']
临时排序
sorted()
cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)
print("\nHere is the sorted list:")
print(sorted(cars))
print("\nHere is the original list again:")
print(cars)
运行程序得:
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']
在这里我们要注意的是:调用函数 sorted() 后,列表元素的排列顺序并没有变
倒着打印列表
`reverse()`
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
运行结果得:
['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']
方法 reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用 reverse() 即可。
确定列表的长度
len()
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4
小插曲
现在我们来动手试试吧,练习一下刚才所学的东西
1.想出至少 5 个你渴望去旅游的地方。
- 将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的。
- 按原始排列顺序打印该列表。不要考虑输出是否整洁的问题,只管打印原始Python 列表。
- 使用 sorted() 按字母顺序打印这个列表,同时不要修改它。
- 再次打印该列表,核实排列顺序未变。
- 使用 sorted() 按与字母顺序相反的顺序打印这个列表,同时不要修改它。
- 再次打印该列表,核实排列顺序未变。
- 使用 reverse() 修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。
- 使用 reverse() 再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。
- 使用 sort() 修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。
- 使用 sort() 修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。
2.在上一个小插曲的最后一题时,我们来使用 len() 打印一条消息,指出你邀请了多少位嘉宾来与你共进晚餐。
3.想想可存储到列表中的东西,如山岳、河流、国家、城市、语言或你喜欢的任何东西。编写一个程序,在其中创建一个包含这些元素的列表,然后,对于本章介绍的每个函数,都至少使用一次来处理这个列表。
使用列表时候避免索引错误
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[3])
运行结果会报错,列表元素是从0开始计算,最多也只有3个元素,而这里要打印第四个元素。
如果我们要访问最后一个元素,别忘了,可以用-1来
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[-1])
运行结果得:
'suzuki'
motorcycles = []
print(motorcycles[-1])
此运行也会报错,因为列表中没有元素