【笔记】Python | 03 | 列表 | 3.3 组织列表


组织列表

在列表中,元素的顺序往往无法控制——因为你不知道用户会把新元素添加在哪。但是有时你需要按照特定顺序展示信息。

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

下面对汽车列表中的元素按照字母顺序排列:

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

输出结果:

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

sort()永久地修改了列表cars中元素的顺序。

我们还可以按照字母相反的顺序排列,此时需要向sort()方法传递参数reverse=True

cars.sort(reverse=True)
print(cars)

输出结果:

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

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

有时我们需要以特定顺序呈现元素,但是又要保留元素的顺序。

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:
['toyota', 'subaru', 'bmw', 'audi']

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

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

可以看到,中间的元素顺序发生了变化,但是再次打印原列表,发现顺序并没有改变。如果要按与字母顺序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True

print(sorted(cars,reverse=True))

倒着打印列表

要想反转列表的元素的顺序,可以使用方法reverse()。注意,reverse()不是倒序排列,而是反转列表现有的排列顺序。reverse()永久改变排序。显然,这种改变随时可以恢复。

cars.reverse()
print(cars)

输出结果:

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

确定列表的长度

使用方法len()可以获得列表的长度。所谓列表的长度,就是列表中有多少个元素。

length = len(cars)
print(length)

输出结果:

>>>> 4

现在我们定义一个空列表,看看它的长度是怎样的:

zero_list = []
length = len(zero_list)
print(length)

输出结果:

>>> 0

此时,列表的长度是0,空列表里没有元素。

练习题

3-8 放眼世界

想出至少5个你想去旅游的地方。

  1. 将这些地方存储在一个列表中,确保元素不按字母顺序排雷
  2. 按原始排列顺序打印该列表
  3. 使用sorted()按字母顺序打印这个列表,同时不要修改它
  4. 再次打印列表,核实列表顺序没有改变
  5. 使用sorted()按与字母顺序相反的顺序打印这个列表,同时不要修改它
  6. 再次打印这个列表进行核实
  7. 使用reverse()修改元素的排列顺序,打印该列表,核实确实改变了
  8. 使用reverse()修改元素的排列顺序,打印,核实顺序恢复
  9. 使用sort()修改列表,使其元素按字母顺序排列。打印,核实。
  10. 使用sort()修改列表,使其按照字母顺序相反的顺序排列,打印,核实。
places = ['tibet','dunhuang','xinjiang','taiwan','koyoto']

print("2.按照原始顺序打印:")
print(places)

print("3.使用sort()按字母顺序打印列表:")
print(sorted(places))

print("4.再次打印列表,核实列表顺序没有改变:")
print(places)

print("5.使用sorted()按与字母顺序相反的顺序打印:")
print(sorted(places,reverse=True))

print("6.打印这个列表核实是否修改了顺序:")
print(places)

print("7.使用reverse()修改元素排列顺序,打印核实:")
places.reverse()
print(places)

print("8.使用reverse()修改元素的排列顺序,打印核实恢复了顺序:")
places.reverse()
print(places)

print("9.使用sort()修改列表,使其元素按字母顺序排列:")
places.sort()
print(places)

print("10.使用sort()修改列表,使其按照相反顺序排列:")
places.sort(reverse=True)
print(places)

输出结果:

>>>
2.按照原始顺序打印:
['tibet', 'dunhuang', 'xinjiang', 'taiwan', 'koyoto']
3.使用sort()按字母顺序打印列表:
['dunhuang', 'koyoto', 'taiwan', 'tibet', 'xinjiang']
4.再次打印列表,核实列表顺序没有改变:
['tibet', 'dunhuang', 'xinjiang', 'taiwan', 'koyoto']
5.使用sorted()按与字母顺序相反的顺序打印:
['xinjiang', 'tibet', 'taiwan', 'koyoto', 'dunhuang']
6.打印这个列表核实是否修改了顺序:
['tibet', 'dunhuang', 'xinjiang', 'taiwan', 'koyoto']
7.使用reverse()修改元素排列顺序,打印核实:
['koyoto', 'taiwan', 'xinjiang', 'dunhuang', 'tibet']
8.使用reverse()修改元素的排列顺序,打印核实恢复了顺序:
['tibet', 'dunhuang', 'xinjiang', 'taiwan', 'koyoto']
9.使用sort()修改列表,使其元素按字母顺序排列:
['dunhuang', 'koyoto', 'taiwan', 'tibet', 'xinjiang']
10.使用sort()修改列表,使其按照相反顺序排列:
['xinjiang', 'tibet', 'taiwan', 'koyoto', 'dunhuang']

3-9 晚餐嘉宾

在完成的练习3-4至练习3-7之中,使用len()打印一条消息,指出邀请了多少位嘉宾来共进晚餐。

guests_names = ['grace', 'jersey', 'einstein']

guests_names.insert(0, 'alex')
guests_names.insert(2, 'michael')
guests_names.append('tom')

print("I have invited " + str(len(guests_names)) + " guests to have dinner with me.")

输出结果:

>>> I have invited 6 guests to have dinner with me.

3-10 尝试使用各个函数

想想可存储到列表中的东西,如山岳、河流、国家、城市、语言或你喜欢的任何东西。编写一个程序,在其中创建一个包含这些元素的列表,然后,对于本章介绍的每个函数,都至少使用一次来处理这个列表。

cars_brand = ['audi','bentley','bmw','cadillac','ferrari','benz','toyota']
cars_brand.sort()
print(cars_brand)

cars_brand.sort(reverse=True)
print(cars_brand)

sorted_cars_brand = sorted(cars_brand)
print(sorted_cars_brand)
print(sorted(cars_brand,reverse=True))

cars_brand.reverse()
print(len(cars_brand))

输出结果:

>>>
['audi', 'bentley', 'benz', 'bmw', 'cadillac', 'ferrari', 'toyota']
['toyota', 'ferrari', 'cadillac', 'bmw', 'benz', 'bentley', 'audi']
['audi', 'bentley', 'benz', 'bmw', 'cadillac', 'ferrari', 'toyota']
['toyota', 'ferrari', 'cadillac', 'bmw', 'benz', 'bentley', 'audi']
7