文章目录

  • 列表
  • 访问列表函数
  • 使用变量中的各个值
  • 小插曲
  • 元素的增、添、改
  • 修改元素
  • 添加元素
  • 插入列表中的元素
  • 从列表中删除元素
  • 使用del语句删除元素
  • 使用方法pop()删除元素
  • 根据值删除元素
  • 小插曲
  • 组织列表
  • 永久性排序
  • 临时排序
  • 倒着打印列表
  • 确定列表的长度
  • 小插曲
  • 使用列表时候避免索引错误


列表

何为列表?

列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字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])

此运行也会报错,因为列表中没有元素