Python 3 - 列表
Python 3 - 列表
Section titled “Python 3 - 列表”序列是 Python 中最基本的有序集合。序列中的每个项目都有一个指定的索引,从 0 开始,代表第一个项目。
Python 提供了几种内置的序列类型,其中列表和元组是最常见的。本节重点介绍列表。
适用于序列的常见操作包括索引、切片、加法(连接)、乘法(重复)和成员测试(in、not in)。Python 还提供了内置函数,如 len()、max() 和 min(),它们适用于序列。
Python 列表
Section titled “Python 列表”列表可以说是 Python 中最通用的序列类型。它们通过将逗号分隔的值(项目)括在方括号 [] 中来定义。列表的一个关键特性是它们是可变的,这意味着创建后可以更改其内容。此外,列表中的项目不需要是相同的数据类型。
创建列表:
# 字符串列表subjects = ['Physics', 'Chemistry', 'Math']
# 整数列表years = [1997, 2000, 2023]
# 包含不同数据类型的列表mixed_list = ['Alice', 30, 1.68, True]
# 空列表empty_list = []
# 使用 list() 构造函数从其他可迭代对象创建列表name_chars = list('Python') # 结果为 ['P', 'y', 't', 'h', 'o', 'n']像字符串一样,列表索引从 0 开始。列表支持切片、连接以及其他序列操作。
访问列表中的值
Section titled “访问列表中的值”使用方括号 [] 和索引或切片来访问列表元素:
#!/usr/bin/env python3
subjects = ['Physics', 'Chemistry', 'Math', 'Biology']numbers = [1, 2, 3, 4, 5, 6, 7]
# 访问单个元素print(f"subjects[0]: {subjects[0]}") # Output: Physicsprint(f"subjects[-1]: {subjects[-1]}") # Output: Biology
# 列表切片print(f"numbers[1:5]: {numbers[1:5]}") # Output: [2, 3, 4, 5]print(f"subjects[:2]: {subjects[:2]}") # Output: ['Physics', 'Chemistry']print(f"numbers[::2]: {numbers[::2]}") # Output: [1, 3, 5, 7]执行代码会产生:
subjects[0]: Physicssubjects[-1]: Biologynumbers[1:5]: [2, 3, 4, 5]subjects[:2]: ['Physics', 'Chemistry']numbers[::2]: [1, 3, 5, 7]由于列表是可变的,你可以更改其内容。你可以通过赋值新值来更新单个元素或切片。
#!/usr/bin/env python3
data = ['physics', 'chemistry', 1997, 2000]print(f"Original list: {data}")
# 更新单个元素data[2] = 2001print(f"After updating index 2: {data}")
# 更新切片data[0:2] = ['Biology', 'Math']print(f"After updating slice [0:2]: {data}")你还可以使用 append()、insert() 和 extend() 等方法(稍后讨论)添加元素。
执行代码会产生:
Original list: ['physics', 'chemistry', 1997, 2000]After updating index 2: ['physics', 'chemistry', 2001, 2000]After updating slice [0:2]: ['Biology', 'Math', 2001, 2000]删除列表元素
Section titled “删除列表元素”你可以通过几种方式从列表中移除元素:
del语句: 按索引删除元素或切片。remove()方法: 删除指定值的第一个出现。pop()方法: 删除并返回指定索引的元素(默认为最后一个元素)。
#!/usr/bin/env python3
items = ['apple', 'banana', 'cherry', 'banana', 'date']print(f"Original list: {items}")
# 使用 'del' 按索引删除del items[2] # 删除 'cherry'print(f"After del items[2]: {items}")
# 使用 'remove()' 按值删除items.remove('banana') # 删除第一个 'banana'print(f"After items.remove('banana'): {items}")
# 使用 'pop()' (默认删除最后一个元素)last_item = items.pop()print(f"Popped item: {last_item}, List after pop(): {items}")
# 使用 'pop()' 按索引删除first_item = items.pop(0)print(f"Popped item: {first_item}, List after pop(0): {items}")执行代码会产生:
Original list: ['apple', 'banana', 'cherry', 'banana', 'date']After del items[2]: ['apple', 'banana', 'banana', 'date']After items.remove('banana'): ['apple', 'banana', 'date']Popped item: date, List after pop(): ['apple', 'banana']Popped item: apple, List after pop(0): ['banana']基本列表操作
Section titled “基本列表操作”列表支持标准的序列操作:
| 操作 | 结果 | 描述 |
|---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 连接 |
['Hi!'] * 3 | ['Hi!', 'Hi!', 'Hi!'] | 重复 |
3 in [1, 2, 3] | True | 成员测试 |
for x in [1, 2, 3]: print(x, end=' ') | 1 2 3 | 迭代 |
索引、切片和嵌套列表
Section titled “索引、切片和嵌套列表”索引和切片的工作方式与字符串完全相同。列表还可以包含其他列表,从而创建常用于表示矩阵或表格的嵌套结构。
#!/usr/bin/env python3
languages = ['C++', 'Java', 'Python', 'Go']
print(f"languages[2]: {languages[2]}") # Output: Pythonprint(f"languages[-1]: {languages[-1]}") # Output: Goprint(f"languages[1:]: {languages[1:]}") # Output: ['Java', 'Python', 'Go']
# 嵌套列表 (矩阵)matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(f"matrix[1]: {matrix[1]}") # Output: [4, 5, 6] (第二行)print(f"matrix[1][1]: {matrix[1][1]}") # Output: 5 (第 1 行第 1 列的元素)内置列表函数
Section titled “内置列表函数”Python 包含几个对列表有用的内置函数:
| 函数 | 描述 |
|---|---|
len(list) | 返回列表中项目的数量。 |
max(list) | 返回列表中值最大的项目。 |
min(list) | 返回列表中值最小的项目。 |
sum(list) | 返回列表中所有数字项目的总和。 |
sorted(list, reverse=False) | 从原始列表的项目中返回一个新的已排序列表。不修改原始列表。 |
list(iterable) | 将可迭代对象(如元组、字符串或 range)转换为列表。 |
常用列表方法
Section titled “常用列表方法”列表有几个内置方法,它们会原地修改列表(除非另有说明)。
| 方法签名 | 描述 |
|---|---|
list.append(item) | 将 item 添加到列表末尾。 |
list.extend(iterable) | 将 iterable 中的所有项目添加到列表末尾。 |
list.insert(index, item) | 将 item 插入到指定 index 处。 |
list.remove(value) | 从列表中移除 value 的第一个出现。如果未找到则引发 ValueError。 |
list.pop([index]) | 移除并返回指定 index 的项目(默认为最后一个项目)。如果列表为空或索引超出范围则引发 IndexError。 |
list.clear() | 移除列表中的所有项目。 |
list.index(value[, start[, end]]) | 返回 value 的第一个出现的索引。如果未找到则引发 ValueError。可选的 start 和 end 限制搜索范围。 |
list.count(value) | 返回 value 在列表中出现的次数。 |
list.sort(key=None, reverse=False) | 原地对列表的项目进行排序。key 指定一个函数来自定义排序顺序,reverse=True 表示降序排序。 |
list.reverse() | 原地反转列表的元素顺序。 |
list.copy() | 返回列表的浅拷贝。 |
使用示例:
#!/usr/bin/env python3
numbers = [3, 1, 4, 1, 5, 9]print(f"Initial list: {numbers}")
numbers.append(2)print(f"After append(2): {numbers}")
numbers.insert(0, 6) # 在开头插入 6print(f"After insert(0, 6): {numbers}")
numbers.sort()print(f"After sort(): {numbers}")
numbers.reverse()print(f"After reverse(): {numbers}")
print(f"Count of 1: {numbers.count(1)}")print(f"Index of 4: {numbers.index(4)}")
popped_item = numbers.pop(1)print(f"Popped item at index 1: {popped_item}, List now: {numbers}")