3.3 组织列表
在创建的列表中,元素的排列顺序常常是无法预测的;有时,你希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。下面介绍Python多种组织列表方式.
3.3.1 sort() :对列表进行永久性排序
a: 让汽车按照字母顺序排列:
cars = ['bmw', 'audi', 'toyota', 'subaru']
❶ cars.sort()
print(cars)
['audi', 'bmw', 'subaru', 'toyota']
sort() 永久性地修改了列表元素的排列顺序。
现在,汽车是按字母顺序排列的,再也无法恢复到原来的排列顺序.
b: 按与字母顺序相反的顺序排列元素:
只需向sort() 方法传递参数 reverse=True
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
['toyota', 'subaru', 'bmw', 'audi']
同样,对列表元素排列顺序的修改是永久性的
3.3.2 sorted() :对列表进行临时排序
保留列表元素原来的排列顺序,同时以特定的顺序呈现它们:
cars = ['bmw', 'audi', 'toyota', 'subaru']
❶ print(cars)
❷print(sorted(cars))
❸print(cars)
['bmw', 'audi', 'toyota', 'subaru']
['audi', 'bmw', 'subaru', 'toyota']
['bmw', 'audi', 'toyota', 'subaru']
注意:调用函数sorted() 后,列表元素的排列顺序并没有变
按与字母顺序相反的顺序:也可向函数sorted() 传递参数reverse=True
print(sorted(cars,reverse=True)) #注意语句写法,用,连接
['toyota', 'subaru', 'bmw', 'audi']
3.3.3 reverse() :倒着打印列表
反转列表元素的排列顺序,可使用方法reverse()
假设汽车按购买时间排列的,可轻松地按相反的顺序排列其中的汽车:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.reverse()
print(cars)
['subaru', 'toyota', 'audi', 'bmw']
注意:reverse() 不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序
reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse() 即可。
3.3.4 reverse() :确定列表的长度
>>> cars = ['bmw', 'audi', 'toyota', 'subaru'] #包含4个元素,长度为4
>>> len(cars)
3.4使用列表时避免索引错误
刚开始使用列表时,经常会遇到一种错误。假设你有一个包含三个元素的列表,却要求获取第四个元素,这将导致索引错误 :
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[3])
Traceback (most recent call last):
File "motorcycles.py", line 3, in <module>
print(motorcycles[3])
IndexError: list index out of range
在Python中,第三个元素的索引为2,因为索引是从0开始的
程序发生索引错误时,请尝试将你指定的索引减1,然后再次运行程序,看看结果是否正确
别忘了,每当需要访问最后一个列表元素时,都可使用索引-1 。这在任何情况下都行之有效
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[-1])
'suzuki' #索引-1 总是返回最后一个列表元素
仅当列表为空时,这种访问最后一个元素的方式才会导致错误
motorcycles = []
print(motorcycles[-1])
Traceback (most recent call last):
File "motorcyles.py", line 3, in <module>
print(motorcycles[-1])
IndexError: list index out of range
注意:发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。列表可能与你以为的截然不同。
2023.5.22
学习资料:《Python编程从入门到实践》