《Python编程:从入门到实践》 第 3 章 列表简介

第 3 章 列表简介

3.1 列表是什么

列表由一系列按特定顺序排列的元素组成。可以将任何东西加入到列表中。用复数给列表起名是不错的主意。

1
2
3
4
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
# 会打印出列表的内部结构,包括括号
['trek', 'cannondale', 'redline', 'specialized']

3.1.1 访问列表元素

列表是有序集合,要访问元素,需给出元素的位置。

1
2
3
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
trek

3.1.2 索引从0而不是从1开始

列表的第1个元素的索引为0,而不是1。在大多数编程语言中都是如此,这与列表操作的底层实现相关。

1
2
3
4
5
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[1])
print(bicycles[3])
cannondale
specialized

Python 访问最有一个元素的特殊语法,通过将索引指定为-1,可返回最后一个元素:

1
2
3
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])
specialized

这种方式其他负数也可以,-2 返回倒数第二个元素,-3 返回倒数第三个元素。

3.1.3 使用列表中的各个值

1
2
3
4
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
message = "My first bicycle was a " + bicycles[0].title() + "."
print(message)
My first bicycle was a Trek.

3.2 修改、添加和删除元素

列表是动态的,可以随着程序的运行增删元素。

3.2.1 修改列表元素

1
2
3
4
5
6
motorcycles = ['honda', 'yamaha', 'suzuki']   
print(motorcycles)
['honda', 'yamaha', 'suzuki']
motorcycles[0] = 'ducati'
print(motorcycles)
['ducati', 'yamaha', 'suzuki']

3.2.2 在列表中增加原始

  1. 在末尾增加

    1
    2
    3
    4
    5
    6
    motorcycles = ['honda', 'yamaha', 'suzuki']
    print(motorcycles)
    ['honda', 'yamaha', 'suzuki']
    motorcycles.append('ducati')
    print(motorcycles)
    ['honda', 'yamaha', 'suzuki', 'ducati']
  2. 在列表中插入元素

    1
    2
    3
    4
    5
    6
    motorcycles = ['honda', 'yamaha', 'suzuki']
    print(motorcycles)
    ['honda', 'yamaha', 'suzuki']
    motorcycles.insert(0, 'ducati')
    print(motorcycles)
    ['ducati', 'honda', 'yamaha', 'suzuki']

3.2.3 从列表中删除元素

  1. 使用 del 语句删除元素

    1
    2
    3
    4
    5
    6
    motorcycles = ['honda', 'yamaha', 'suzuki']
    print(motorcycles)
    ['honda', 'yamaha', 'suzuki']
    del motorcycles[0]
    print(motorcycles)
    ['yamaha', 'suzuki']
  2. 使用方法 pop() 删除元素,调用 pop() 方法后会返回被删除的元素

    1
    2
    3
    4
    5
    6
    7
    8
    motorcycles = ['honda', 'yamaha', 'suzuki']
    print(motorcycles)
    ['honda', 'yamaha', 'suzuki']
    popped_motorcycle = motorcycles.pop()
    print(motorcycles)
    ['honda', 'yamaha']
    print(popped_motorcycle)
    suzuki
  1. 弹出列表中任何位置的元素,为 pop() 方法删除任意元素。可以使用 pop() 删除列表中任意位置的元素,只需在括号中指定要删除元素的索引即可。

    1
    2
    3
    4
    5
    6
    7
    8
    motorcycles = ['honda', 'yamaha', 'suzuki']
    print(motorcycles)
    ['honda', 'yamaha', 'suzuki']
    popped_motorcycle = motorcycles.pop(1)
    print(motorcycles)
    ['honda', 'suzuki']
    print(popped_motorcycle)
    yamaha
  2. 根据值删除元素。如果知道元素值,可使用 remove() 方法删除。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
    print(motorcycles)
    ['honda', 'yamaha', 'suzuki', 'ducati']
    too_expensive = motorcycles.remove('ducati')
    print(motorcycles)
    ['honda', 'yamaha', 'suzuki']
    print("\nA " + too_expensive.title() + " is too expensive for me.")

    A Ducati is too expensive for me.

    注意:remove() 方法只删除列表中的第一个指定值。如果要删除的值在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

3.3 组织列表

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

按字母排序(都是小写),使用 sort() 后永久地修改了列表元素的顺序。

1
2
3
4
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
['audi', 'bmw', 'subaru', 'toyota']

方向排序,只需向 sort() 方法传递参数 reverse=True

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

3.3.2 使用函数 sorted() 对列表进行临时排序,不影响原有排序,返回排序后的结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
print("\nHere is the sorted list:")
print(sorted(cars))
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
print("\nHere is the original list again:")
print(cars)
Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']
# 按字母反向排序
print(sorted(cars, reverse=True))
['toyota', 'subaru', 'bmw', 'audi']

3.3.3 倒着打印列表

不是按字母排序,仅仅是把列表顺序翻转下。这是永久性的操作,要恢复再调用下 reverse() 即可。

1
2
3
4
5
6
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
['bmw', 'audi', 'toyota', 'subaru']
cars.reverse()
print(cars)
['subaru', 'toyota', 'audi', 'bmw']

3.3.4 确定列表的长度

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

3.4 使用列表是避免索引错误

当列表为空时,使用任何索引值获取列表元素都会返回下面错误消息:

1
2
3
4
5
6
7
8
9
10
11
>>> motorcyles = []
>>> print(motorcyles[0])
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
print(motorcyles[0])
IndexError: list index out of range
>>> print(motorcyles[-1])
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
print(motorcyles[-1])
IndexError: list index out of range

注意:当发生索引错误缺找不到问题是,可尝试打印列表或其长度。

3.5 小节

本章学习了:什么是列表、列表元素的增删、列表的永久和临时排序、列表长度、如何避免索引错误。


完整的学习笔记列表