列表简介
列表是Python中最基础和最常用的数据结构,它具有以下特点:
- 可以存储任意类型的数据(数字、字符串、对象等)
- 元素有序排列,可以通过索引访问
- 支持动态增删改查操作
- 可以嵌套,形成多维列表
创建列表
# 1. 使用方括号创建空列表
empty_list = []
# 2. 使用list()函数创建空列表
another_empty = list()
# 3. 创建包含元素的列表
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]
# 4. 使用列表推导式创建列表
squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
# 5. 创建多维列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
提示:
创建多维列表时要注意浅拷贝和深拷贝的问题,使用 * 运算符复制列表可能会导致意外结果。
访问元素
numbers = [1, 2, 3, 4, 5]
# 1. 使用索引访问单个元素
first = numbers[0] # 1
last = numbers[-1] # 5
# 2. 使用切片访问多个元素
subset = numbers[1:4] # [2, 3, 4]
reversed = numbers[::-1] # [5, 4, 3, 2, 1]
# 3. 遍历列表
for num in numbers:
print(num)
# 4. 使用enumerate()同时获取索引和值
for index, value in enumerate(numbers):
print(f"索引 {index}: {value}")
修改列表
fruits = ['apple', 'banana', 'orange']
# 1. 修改单个元素
fruits[1] = 'grape' # ['apple', 'grape', 'orange']
# 2. 添加元素
fruits.append('mango') # 在末尾添加
fruits.insert(1, 'pear') # 在指定位置插入
# 3. 删除元素
fruits.remove('apple') # 删除指定元素
del fruits[0] # 删除指定位置的元素
popped = fruits.pop() # 删除并返回最后一个元素
# 4. 使用切片修改多个元素
fruits[1:3] = ['kiwi', 'lemon']
常用方法
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]
# 1. 排序
numbers.sort() # 原地排序
sorted_nums = sorted(numbers) # 返回新列表
# 2. 反转
numbers.reverse()
# 3. 计数和查找
count = numbers.count(5) # 统计元素出现次数
index = numbers.index(4) # 查找元素位置
# 4. 列表操作
numbers.extend([8, 7]) # 扩展列表
numbers.clear() # 清空列表
# 5. 复制列表
copy1 = numbers.copy() # 浅拷贝
import copy
copy2 = copy.deepcopy(numbers) # 深拷贝
高级操作
# 1. 列表推导式进阶
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [x for row in matrix for x in row] # 扁平化列表
# 2. 条件筛选
evens = [x for x in range(10) if x % 2 == 0]
# 3. 使用zip()合并列表
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
pairs = list(zip(names, ages)) # [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
# 4. 使用map()和filter()
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
odds = list(filter(lambda x: x % 2 == 1, numbers))
练习题
基础练习
- 创建一个包含1到10的列表,然后打印出所有偶数。
- 将两个列表合并,并删除重复元素。
- 找出列表中的最大值和最小值,不使用max()和min()函数。
进阶练习
- 实现列表的冒泡排序算法。
- 将一个多维列表转换为一维列表。
- 找出列表中出现次数最多的元素。
学习路径:
列表 → 元组 → 字典 → 集合