Python3 列表
Python3 列表(List)
🎯 学习目标
掌握 Python 中列表的定义、操作方法及实际应用场景,理解其可变性与动态特性。能够在项目中灵活使用列表进行数据组织、处理和高效操作。
🔑 核心重点
分类 | 内容 |
---|---|
基本结构 | 使用 [] 或 list() 创建列表 |
可变性 | 支持增删改查操作 |
操作方法 | 索引访问、切片、拼接、排序、推导式等 |
实际应用场景 | 数据存储、集合运算、动态数据结构模拟等 |
性能优化技巧 | 列表推导式、避免频繁扩容、使用生成器等 |
📚 详细讲解
一、什么是列表?
列表(List)是 Python 中最常用的数据结构之一,用于有序存储多个元素。它是可变的(mutable),支持多种类型混合存储。
✅ 定义方式:
lst1 = [1, 2, 3]
lst2 = ["apple", "banana", "cherry"]
lst3 = [1, "two", True, [4, 5]] # 混合类型列表
lst4 = list(range(5)) # 使用构造函数创建:[0, 1, 2, 3, 4]
📌 特点:
- 元素可以重复
- 有序(按插入顺序)
- 可修改(添加/删除/替换元素)
二、列表的基本操作
✅ 1. 访问元素(索引)
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # 输出:apple
print(fruits[-1]) # 输出:cherry
⚠️ 越界访问会抛出
IndexError
✅ 2. 切片操作(slice)
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[2:5]) # 输出:[2, 3, 4]
print(nums[:3]) # 输出:[0, 1, 2]
print(nums[::2]) # 输出:[0, 2, 4, 6, 8] (步长为2)
✅ 3. 修改元素
nums = [10, 20, 30]
nums[1] = 25
print(nums) # 输出:[10, 25, 30]
✅ 4. 添加元素
方法名 | 描述 | 示例 |
---|---|---|
append(x) |
在末尾添加一个元素 | lst.append("orange") |
insert(i, x) |
在指定位置插入元素 | lst.insert(1, "blueberry") |
extend(iterable) |
扩展列表 | lst.extend(["grape", "kiwi"]) |
✅ 5. 删除元素
方法名 | 描述 | 示例 |
---|---|---|
del lst[i] |
删除指定索引的元素 | del fruits[0] |
lst.remove(x) |
删除第一个匹配值的元素 | fruits.remove("banana") |
lst.pop([i]) |
弹出并返回指定索引的元素(默认最后一个) | item = fruits.pop() |
lst.clear() |
清空列表 | fruits.clear() |
三、列表常用方法
方法名 | 描述 | 示例 |
---|---|---|
len(lst) |
返回列表长度 | len([1, 2, 3]) → 3 |
lst.index(x) |
查找元素首次出现的位置 | [10, 20, 30].index(20) → 1 |
x in lst |
判断元素是否存在于列表中 | "apple" in fruits |
lst.count(x) |
统计元素出现次数 | [1, 2, 1, 3].count(1) → 2 |
lst.sort() |
对列表原地排序 | nums.sort() |
sorted(lst) |
返回排序后的新列表 | sorted_nums = sorted(nums) |
lst.reverse() |
原地反转列表 | nums.reverse() |
reversed(lst) |
返回逆序迭代器 | for x in reversed(nums): print(x) |
四、列表推导式(List Comprehensions)
Python 特有的简洁语法,用于快速构建列表。
✅ 基本格式:
squares = [x**2 for x in range(10)]
print(squares) # 输出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
✅ 带条件筛选:
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # 输出:[0, 2, 4, 6, 8]
五、嵌套列表与多维数组
✅ 示例:二维列表(类似矩阵)
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[0][1]) # 输出:2
✅ 展平二维列表:
flattened = [num for row in matrix for num in row]
print(flattened) # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
⚠️ 注意事项
- 列表是可变对象,传参或赋值时是引用传递。
- 避免在遍历过程中修改列表(如删除元素),建议使用副本或推导式。
append()
和extend()
的区别:前者加一个元素,后者加多个。- 多层嵌套列表应使用
deepcopy()
避免浅拷贝问题。 - 使用
isinstance()
检查类型比type()
更安全。
🧪 实际案例分析
📌 场景:统计学生考试成绩分布
scores = [85, 92, 78, 65, 90, 88, 70, 60, 55, 95, 80]
# 使用列表推导式分类
excellent = [score for score in scores if score >= 90]
good = [score for score in scores if 80 <= score < 90]
average = [score for score in scores if 60 <= score < 80]
fail = [score for score in scores if score < 60]
print(f"优秀(≥90)人数:{len(excellent)}")
print(f"良好(80~89)人数:{len(good)}")
print(f"合格(60~79)人数:{len(average)}")
print(f"不及格(<60)人数:{len(fail)}")
📌 输出示例:
优秀(≥90)人数:3
良好(80~89)人数:3
合格(60~79)人数:3
不及格(<60)人数:1
📌 应用:
- 教育数据分析
- 成绩管理系统
- 报表生成工具
🧩 拓展练习(动手实践)
- 编写一个函数
flatten_list(nested_list)
,将任意深度的嵌套列表“展平”成一维列表。 - 输入一组数字,去除重复项后按升序排列输出。
- 实现冒泡排序算法,对列表进行排序。
- 使用列表推导式生成斐波那契数列前 n 项。
- 编写程序读取文本文件,将每行内容作为列表的一个元素,并统计总行数和关键词出现次数。
📚 推荐阅读
- Python 官方文档 - 列表
- 《流畅的 Python》第 3 章 - 序列与列表推导式
- 廖雪峰 Python 教程 - 列表
- 菜鸟教程 - Python 列表
- Python 编程从入门到实践 - 第 3 章 - 列表简介
🧭 下一步建议
- 下一章学习内容:《Python 元组(Tuple)详解》
- 掌握元组的不可变性与实际用途
- 学习元组与列表的区别与转换
- 探索元组在函数返回值、解包赋值中的应用
- 结合列表与元组知识,尝试编写结构化数据处理程序
如果你希望我为你提供:
- Python 列表常用方法速查表 PDF
- 更多实战项目练习题(如通讯录、学生成绩管理器、任务清单等)
- 列表推导式高级用法详解
- 列表性能调优指南(如 append vs insert、内存占用等)
- 视频教学资源推荐(中文讲解)
欢迎随时告诉我 😊