Python 列表
列表是Python中最常用的数据结构之一,就像一个可以装很多东西的"魔法盒子"。在Python中,列表可以存储多种类型的数据,并且可以动态添加或删除元素。
为什么使用列表?
想象一下,如果你有很多数据需要存储和管理:
- 班级所有学生的名字
- 一次考试的所有成绩
- 购物清单
- 游戏中的角色信息
使用列表可以轻松解决这些问题!
创建列表
创建列表非常简单,使用方括号[ ]将元素括起来,元素之间用逗号分隔:
# 创建空列表
empty_list = []
# 创建数字列表
numbers = [1, 2, 3, 4, 5]
# 创建字符串列表
fruits = ["苹果", "香蕉", "橙子"]
# 创建混合列表
mixed = [100, "Python", True, 3.14]
# 创建列表的列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
empty_list = []
# 创建数字列表
numbers = [1, 2, 3, 4, 5]
# 创建字符串列表
fruits = ["苹果", "香蕉", "橙子"]
# 创建混合列表
mixed = [100, "Python", True, 3.14]
# 创建列表的列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
0
苹果
1
香蕉
2
橙子
访问列表元素
可以使用索引访问列表中的元素(索引从0开始):
fruits = ["苹果", "香蕉", "橙子"]
# 访问第一个元素
print(fruits[0]) # 输出: 苹果
# 访问第三个元素
print(fruits[2]) # 输出: 橙子
# 访问最后一个元素
print(fruits[-1]) # 输出: 橙子
# 访问嵌套列表
matrix = [[1, 2, 3], [4, 5, 6]]
print(matrix[0][1]) # 输出: 2
# 访问第一个元素
print(fruits[0]) # 输出: 苹果
# 访问第三个元素
print(fruits[2]) # 输出: 橙子
# 访问最后一个元素
print(fruits[-1]) # 输出: 橙子
# 访问嵌套列表
matrix = [[1, 2, 3], [4, 5, 6]]
print(matrix[0][1]) # 输出: 2
注意
尝试访问超出列表范围的索引会导致错误!
fruits = ["苹果", "香蕉", "橙子"]
# 以下代码会引发错误!
# print(fruits[3])
# 以下代码会引发错误!
# print(fruits[3])
修改列表
列表是可变的数据结构,这意味着您可以更改列表中的元素:
fruits = ["苹果", "香蕉", "橙子"]
# 更改第二个元素
fruits[1] = "葡萄"
print(fruits) # 输出: ['苹果', '葡萄', '橙子']
# 更改最后一个元素
fruits[-1] = "西瓜"
print(fruits) # 输出: ['苹果', '葡萄', '西瓜']
# 更改第二个元素
fruits[1] = "葡萄"
print(fruits) # 输出: ['苹果', '葡萄', '橙子']
# 更改最后一个元素
fruits[-1] = "西瓜"
print(fruits) # 输出: ['苹果', '葡萄', '西瓜']
添加列表元素
有几种方法可以向列表添加元素:
append()
在列表末尾添加单个元素
fruits.append('草莓')
extend()
将另一个列表的元素添加到当前列表
fruits.extend(['蓝莓', '樱桃'])
insert()
在指定位置插入元素
fruits.insert(1, '芒果')
添加元素示例
fruits = ["苹果", "香蕉", "橙子"]
# 添加单个元素
fruits.append("草莓")
print(fruits) # 输出: ['苹果', '香蕉', '橙子', '草莓']
# 添加多个元素
fruits.extend(["蓝莓", "樱桃"])
print(fruits) # 输出: ['苹果', '香蕉', '橙子', '草莓', '蓝莓', '樱桃']
# 在指定位置插入元素
fruits.insert(1, "芒果")
print(fruits) # 输出: ['苹果', '芒果', '香蕉', '橙子', '草莓', '蓝莓', '樱桃']
# 添加单个元素
fruits.append("草莓")
print(fruits) # 输出: ['苹果', '香蕉', '橙子', '草莓']
# 添加多个元素
fruits.extend(["蓝莓", "樱桃"])
print(fruits) # 输出: ['苹果', '香蕉', '橙子', '草莓', '蓝莓', '樱桃']
# 在指定位置插入元素
fruits.insert(1, "芒果")
print(fruits) # 输出: ['苹果', '芒果', '香蕉', '橙子', '草莓', '蓝莓', '樱桃']
删除列表元素
同样有几种方法可以删除列表中的元素:
remove()
删除第一个匹配的元素
fruits.remove('香蕉')
pop()
删除指定索引处的元素(默认删除最后一个)
fruits.pop(2)
del
删除指定索引或切片
del fruits[1]
删除元素示例
fruits = ["苹果", "芒果", "香蕉", "橙子", "草莓"]
# 删除特定元素
fruits.remove("芒果")
print(fruits) # 输出: ['苹果', '香蕉', '橙子', '草莓']
# 删除索引为2的元素
removed = fruits.pop(2)
print(f"删除了: {removed}") # 输出: 删除了: 橙子
print(fruits) # 输出: ['苹果', '香蕉', '草莓']
# 删除最后一个元素
del fruits[-1]
print(fruits) # 输出: ['苹果', '香蕉']
# 删除特定元素
fruits.remove("芒果")
print(fruits) # 输出: ['苹果', '香蕉', '橙子', '草莓']
# 删除索引为2的元素
removed = fruits.pop(2)
print(f"删除了: {removed}") # 输出: 删除了: 橙子
print(fruits) # 输出: ['苹果', '香蕉', '草莓']
# 删除最后一个元素
del fruits[-1]
print(fruits) # 输出: ['苹果', '香蕉']
列表切片
切片允许我们获取列表的一部分:
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 获取前3个元素
print(numbers[:3]) # 输出: [0, 1, 2]
# 获取索引3到5的元素
print(numbers[3:6]) # 输出: [3, 4, 5]
# 获取最后3个元素
print(numbers[-3:]) # 输出: [7, 8, 9]
# 每隔一个元素取一个
print(numbers[::2]) # 输出: [0, 2, 4, 6, 8]
# 反转列表
print(numbers[::-1]) # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
# 获取前3个元素
print(numbers[:3]) # 输出: [0, 1, 2]
# 获取索引3到5的元素
print(numbers[3:6]) # 输出: [3, 4, 5]
# 获取最后3个元素
print(numbers[-3:]) # 输出: [7, 8, 9]
# 每隔一个元素取一个
print(numbers[::2]) # 输出: [0, 2, 4, 6, 8]
# 反转列表
print(numbers[::-1]) # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
遍历列表
可以使用for循环遍历列表中的每个元素:
fruits = ["苹果", "香蕉", "橙子"]
# 简单遍历
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 带索引的遍历
for index, fruit in enumerate(fruits):
print(f"水果 #{index+1}: {fruit}")
# 输出结果:
# 我喜欢吃苹果
# 我喜欢吃香蕉
# 我喜欢吃橙子
# 水果 #1: 苹果
# 水果 #2: 香蕉
# 水果 #3: 橙子
# 简单遍历
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 带索引的遍历
for index, fruit in enumerate(fruits):
print(f"水果 #{index+1}: {fruit}")
# 输出结果:
# 我喜欢吃苹果
# 我喜欢吃香蕉
# 我喜欢吃橙子
# 水果 #1: 苹果
# 水果 #2: 香蕉
# 水果 #3: 橙子
常用列表方法
| 方法 | 说明 | 示例 |
|---|---|---|
| len() | 获取列表长度 | len(fruits) → 3 |
| sort() | 对列表进行永久排序 | fruits.sort() |
| sorted() | 返回排序后的新列表 | sorted(fruits) |
| reverse() | 反转列表元素顺序 | fruits.reverse() |
| index() | 返回元素的索引位置 | fruits.index("香蕉") → 1 |
| count() | 统计元素出现次数 | fruits.count("苹果") → 1 |
| copy() | 创建列表的副本 | new_list = fruits.copy() |
| clear() | 清空列表 | fruits.clear() |
列表练习
尝试解决这些练习来巩固你的列表知识:
编程挑战
练习1:成绩统计
编写一个程序,统计学生成绩列表中:
- 平均成绩
- 最高分
- 最低分
- 不及格(低于60分)人数
示例:
成绩: [85, 92, 78, 90, 55, 67, 95]
输出:
平均分: 80.29
最高分: 95
最低分: 55
不及格人数: 1
练习2:列表排序
编写一个程序,让用户输入5个数字,然后:
- 按升序排序
- 按降序排序
- 排除重复数字
练习3:购物车系统
创建一个简单的购物车系统:
- 显示商品列表
- 添加商品到购物车
- 从购物车移除商品
- 计算总价格
练习4:矩阵操作
创建一个3x3矩阵(列表的列表),然后:
- 计算对角线元素之和
- 转置矩阵(行变为列)
示例:
矩阵:
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
对角线之和: 15
转置后:
[[1, 4, 7],
[2, 5, 8],
[3, 6, 9]]
总结
关键知识点回顾
✓ 列表创建: 使用方括号[]创建列表
✓ 元素访问: 通过索引获取元素(从0开始)
✓ 修改列表: 列表是可变的,可以修改元素
✓ 添加元素: append(), extend(), insert()
✓ 删除元素: remove(), pop(), del
✓ 列表切片: 获取子列表
✓ 列表遍历: 使用for循环处理每个元素
✓ 常用方法: sort(), reverse(), len()
列表小测验
看看你是否掌握了这些知识:
- 如何创建一个包含三个元素的列表?
- 如何访问列表的最后一个元素?
- 向列表添加元素的三种方法是什么?
- 如何获取列表的长度?
- 如何反转列表的顺序?