管理列表
通常,您的列表将以不可预测的顺序创建,因为您无法始终控制用户提供数据的顺序。 虽然这在大多数情况下是不可避免的,但您会经常希望以特定顺序显示您的信息。 有时您会希望保留列表的原始顺序,而有时您会希望更改原始顺序。 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()
来恢复原始顺序。