在你创建的列表中,元素的排列顺序常常是无法预测的,因为你并非总能控制用户提供数据的顺序。Python提供了很多组织列表的方式,可根据具体情况选用。
Python方法sort()让你能够较为轻松地对列表进行排序。假设你有一个汽车列表,并要让其中的汽车按字母顺序排列。为简化这项任务,我们假设该列表中的所有值都是小写的。
#方法sort()永久性改变了顺序,现在汽车是按照字母顺序排列的
cars = ['bmw','audi','toyota','subaru']
cars.sort()
print(cars)
['audi', 'bmw', 'subaru', 'toyota']
你还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数reverse=True。
cars = ['bmw','audi','toyota','subaru']
cars.sort(reverse=True)
print(cars)
['toyota', 'subaru', 'bmw', 'audi']
同样,对列表元素排列顺序的修改是永久性的。
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用sorted()。 函数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 orginal 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 orginal list again:
['bmw', 'audi', 'toyota', 'subaru']
注意,调用函数sorted()后,列表元素的排列顺序并没有变。如果你要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。
注意:在并非所有的值都是小写时,按字母顺序排列列表要复杂些。决定排列顺序时,有多种解读大写字母的方式,要指定准确的排列顺序,可能比我们这里所做的要复杂。然而大多数排序方式都基于本节介绍的知识。
要反转列表元素的排列顺序,可使用方法reverse()。假设汽车列表是按购买时间排列的,可轻松地按相反的顺序排列其中的汽车。
cars = ['bmw','audi','toyota','subaru']
print(cars)cars.reverse()
print(cars)
注意,reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序: ['bmw','audi','toyota','subaru'] ['subaru','toyota','audi','bmw']
方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可。
使用函数len()可快速获悉列表的长度。在下面的示例中,列表包含4各元素,因此长度为4。
>>>cars = ['bmw','audi','toyota','subaru']
>>>len(cars)
4
注意:Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误。
#动手试一试
#3-8放眼世界:想出至少五个你渴望去旅游的地方
city = ['beijing','xiamen','hangzhou','shanghai','shenzheng']
print('说出5个想去旅游的地方')
print(city)
print('\n使用使用 sorted() 按字母顺序打印这个列表,同时不要修改它')
print(sorted(city))
print('\n本次打印该列表,核实排列顺序未变')
print(city)
print('\n使用 sorted() 按与字母顺序相反的顺序打印这个列表,同时不要修改它')
print(sorted(city,reverse=True))
print('\n本次打印该列表,核实排列顺序未变')
print(city)
print('\n使用 reverse() 修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了')
city.reverse()
print(city)
print('\n使用 reverse() 再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序')
print(city)
print('\n使用 sort() 修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了')
city.sort()
print(city)
print('\n使用 sort() 修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了')
city.sort(reverse=True)
print(city)