管理列表

通常,您的列表将以不可预测的顺序创建,因为您无法始终控制用户提供数据的顺序。 虽然这在大多数情况下是不可避免的,但您会经常希望以特定顺序显示您的信息。 有时您会希望保留列表的原始顺序,而有时您会希望更改原始顺序。 Python 提供了许多不同的方式来组织您的列表,这取决于具体情况。

使用 sort() 方法对列表进行永久排序

Python 的 sort() 方法使得对列表进行排序相对容易。 假设我们有一个汽车列表,并且想要更改列表的顺序以按字母顺序存储它们。 为了简化任务,我们假设列表中的所有值都是小写的:

cars_0_first_version.py
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)

sort() 方法永久更改列表的顺序。 汽车现在按字母顺序排列,我们永远无法恢复到原来的顺序:

['audi', 'bmw', 'subaru', 'toyota']

您还可以通过将参数 reverse=True 传递给 sort() 方法,以逆字母顺序对该列表进行排序。 以下示例按相反的字母顺序对汽车列表进行排序:

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)

同样,列表的顺序被永久更改:

['toyota', 'subaru', 'bmw', 'audi']

使用 sorted() 函数对列表进行临时排序

要保持列表的原始顺序但按排序顺序显示它,可以使用 sorted() 函数。 sorted() 函数可让您以特定顺序显示列表,但不会影响列表的实际顺序。 让我们在汽车列表上试试这个函数。

cars = ['bmw', 'audi', 'toyota', 'subaru']

print("Here is the original list:") (1)
print(cars)

print("\nHere is the sorted list:") (2)
print(sorted(cars))

print("\nHere is the original list again:") (3)
print(cars)
1 我们首先按原始顺序打印列表,
2 然后按字母顺序打印。
3 列表按照新的顺序显示后,我们显示列表还是按照原来的顺序存储的
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']

Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']

Here is the original list again: (1)
['bmw', 'audi', 'toyota', 'subaru']
1 请注意,在使用 sorted() 函数后,列表仍然以其原始顺序存在。 如果你想以反向字母顺序显示列表, sorted() 函数也可以接受 reverse=True 参数。

当所有值都不是小写时,按字母顺序对列表进行排序会稍微复杂一些。 在确定排序顺序时有几种解释大写字母的方法,并且指定确切的顺序可能比我们此时要处理的要复杂。 但是,大多数排序方法将直接建立在您在本节中学到的知识之上。

反向打印列表

要反转列表的原始顺序,可以使用 reverse() 方法。 如果我们最初根据拥有汽车的时间顺序存储汽车列表,我们可以很容易地将列表重新排列为逆时间顺序:

cars_3_reverse_order.py
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)

cars.reverse()
print(cars)

请注意 reverse() 不会按字母顺序向后排序; 它只是颠倒了列表的顺序:

['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']

reverse() 方法会永久更改列表的顺序,但您可以随时通过对同一列表再次应用 reverse() 来恢复原始顺序。

确定列表的长度

您可以使用 len() 函数快速找到列表的长度。 这个例子中的列表有四个项目,所以它的长度是 4:

>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4

当您需要确定游戏中仍需击落的外星人数量、确定您必须在可视化中管理的数据量或计算注册用户数量时,您会发现 len() 非常有用 在网站上,以及其他任务。

Python 从 1 开始计数列表中的项目,因此在确定列表的长度时不应遇到任何差错。

自己试试
3-8.Seeing the World

想想世界上至少五个你想去的地方。 将位置存储在列表中。 确保列表不是按字母顺序排列的。 按原始顺序打印您的列表。 不用担心打印清单是否整齐; 只需将其打印为原始 Python 列表即可。 使用 sorted() 按字母顺序打印列表而不修改实际列表。 通过打印显示您的列表仍按其原始顺序排列。 使用 sorted() 以逆字母顺序打印您的列表,而不更改原始列表的顺序。 通过再次打印来显示您的列表仍按其原始顺序排列。 使用 reverse() 更改列表的顺序。 打印列表以显示其顺序已更改。 使用 reverse() 再次更改列表的顺序。 打印列表以显示它已恢复到原来的顺序。 使用 sort() 更改您的列表,使其按字母顺序存储。 打印列表以显示其顺序已更改。 使用 sort() 更改您的列表,使其按字母倒序存储。 打印列表以显示其顺序已更改。

3-9.Dinner Guests

使用练习 3-4 到 3-7(第 41-42 页)中的一个程序,使用 len() 打印一条消息,指示您邀请参加晚餐的人数。

3-10.Every Function

想一想你可以存储在列表中的东西。 例如,您可以列出山脉、河流、国家、城市、语言或任何您想要的内容。 编写一个程序,创建一个包含这些项目的列表,然后至少使用本章介绍的每个函数一次。