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

📌 应用

  • 教育数据分析
  • 成绩管理系统
  • 报表生成工具

🧩 拓展练习(动手实践)

  1. 编写一个函数 flatten_list(nested_list),将任意深度的嵌套列表“展平”成一维列表。
  2. 输入一组数字,去除重复项后按升序排列输出。
  3. 实现冒泡排序算法,对列表进行排序。
  4. 使用列表推导式生成斐波那契数列前 n 项。
  5. 编写程序读取文本文件,将每行内容作为列表的一个元素,并统计总行数和关键词出现次数。

📚 推荐阅读


🧭 下一步建议

  • 下一章学习内容:《Python 元组(Tuple)详解》
  • 掌握元组的不可变性与实际用途
  • 学习元组与列表的区别与转换
  • 探索元组在函数返回值、解包赋值中的应用
  • 结合列表与元组知识,尝试编写结构化数据处理程序

如果你希望我为你提供:

  • Python 列表常用方法速查表 PDF
  • 更多实战项目练习题(如通讯录、学生成绩管理器、任务清单等)
  • 列表推导式高级用法详解
  • 列表性能调优指南(如 append vs insert、内存占用等)
  • 视频教学资源推荐(中文讲解)

欢迎随时告诉我 😊

posted @ 2025-05-28 00:04  红尘过客2022  阅读(66)  评论(0)    收藏  举报