网站首页 > 技术文章 正文
一、列表基础操作
1. 列表的定义与特性
- 定义:用方括号[]包裹的有序元素集合,元素可以是任意类型(如数字、字符串、其他列表)。
empty_list = [] # 空列表
mixed_list = [1, "apple", True, 3.14] # 混合类型列表
nested_list = [[1, 2], ["a", "b"]] # 嵌套列表
- 特性:
- 有序:元素按定义顺序排列。
- 可变:支持增删改操作。
- 支持重复:允许元素重复出现。
2. 索引与切片
- 索引:通过[]访问单个元素(从0开始,支持负数索引)。
fruits = ["apple", "banana", "cherry"]
print(fruits # 输出:apple(第1个元素)
print(fruits[-1]) # 输出:cherry(最后一个元素)
- 切片:通过[start:end:step]截取子列表。
print(fruits[1:3]) # 输出:['banana', 'cherry'](取索引1-2)
print(fruits[::-1]) # 输出:['cherry', 'banana', 'apple'](反转列表)
3. 常用操作
- 长度:len(list)
print(len(fruits)) # 输出:3
- 拼接:+或extend()
new_list = fruits + ["orange"] # 输出:['apple', 'banana', 'cherry', 'orange']
fruits.extend(["kiwi"]) # 原地扩展列表:['apple', 'banana', 'cherry', 'kiwi']
- 重复:*
print(["!"] * 3) # 输出:['!', '!', '!']
二、列表进阶技巧
1. 列表推导式(List Comprehension)
用简洁语法快速生成列表,替代复杂的循环和条件判断。
# 生成1-10的平方
squares = [x**2 for x in range(1, 11)]
print(squares) # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 筛选出偶数
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers) # 输出:[0, 2, 4, 6, 8]
2. 嵌套列表与二维列表
通过嵌套列表实现矩阵或表格结构。
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 访问元素
print(matrix[0] # 输出:2(第1行第2列)
# 遍历二维列表
for row in matrix:
print(row)
3. 排序与反转
- 原地排序:sort()(修改原列表)。
numbers = [3, 1, 4, 1, 5]
numbers.sort() # 输出:[1, 1, 3, 4, 5]
- 返回新列表排序:sorted()(不修改原列表)。
sorted_numbers = sorted(numbers, reverse=True) # 输出:[5, 4, 3, 1, 1]
- 反转列表:reverse()
fruits.reverse() # 输出:['kiwi', 'cherry', 'banana', 'apple']
三、列表内置方法详解
以下是Python列表最常用的方法及其用法:
方法 | 作用 | 示例 |
append(obj) | 在列表末尾添加元素 | fruits.append("orange") |
extend(iterable) | 合并另一个可迭代对象到列表末尾 | fruits.extend(["kiwi", "mango"]) |
insert(index, obj) | 在指定位置插入元素 | fruits.insert(1, "grape") |
remove(obj) | 删除第一个匹配的元素 | fruits.remove("banana") |
pop([index]) | 删除并返回指定索引的元素(默认最后一个) | last_fruit = fruits.pop() |
clear() | 清空列表 | fruits.clear() |
copy() | 浅拷贝列表 | new_fruits = fruits.copy() |
count(obj) | 统计元素出现次数 | fruits.count("apple") |
index(obj) | 返回元素的第一个匹配索引 | fruits.index("cherry") |
sort() | 原地排序列表(默认升序) | numbers.sort() |
reverse() | 原地反转列表 | numbers.reverse() |
四、实际案例:列表的综合应用
案例1:数据处理(统计成绩)
scores = [85, 92, 78, 90, 88]
# 计算总分和平均分
total = sum(scores)
average = total / len(scores)
print(f"总分:{total},平均分:{average:.2f}") # 输出:总分:433,平均分:86.60
# 筛选高分(≥90)
high_scores = [score for score in scores if score >= 90]
print(high_scores) # 输出:[92, 90]
案例2:模拟栈(后进先出)
stack = []
stack.append("A") # 入栈
stack.append("B")
print(stack.pop()) # 输出:B(出栈)
print(stack) # 输出:['A']
案例3:学生管理系统(增删改查)
students = []
# 添加学生
students.append({"name": "张三", "age": 20, "score": 85})
students.append({"name": "李四", "age": 22, "score": 90})
# 查询学生
print(students[0]["name"]) # 输出:张三
# 修改成绩
students[1]["score"] = 95
# 删除学生
students.pop(0)
print(students) # 输出:[{'name': '李四', 'age': 22, 'score': 95}]
五、常见问题与解决方案
1. 索引越界错误(IndexError)
现象:IndexError: list index out of range
原因:访问不存在的索引(如空列表或超出长度的索引)。
解决:
- 检查索引范围(如if len(list) > index)。
- 使用try-except捕获异常。
try:
print(fruits
except IndexError:
print("索引超出范围!")
2. 列表与元组的区别
特性 | 列表 | 元组 |
可变性 | 可修改 | 不可修改 |
定义符号 | [] | () |
性能 | 更耗内存(动态扩容) | 更轻量(固定内存) |
适用场景 | 需要频繁修改的数据 | 不可变或频繁访问的数据 |
3. 浅拷贝与深拷贝
- 浅拷贝:copy()或切片[:](仅复制顶层引用)。
nested = [[1, 2], [3, 4]]
copy_nested = nested.copy()
copy_nested[0][0] = 99 # 原列表也会被修改!
- 深拷贝:需用copy.deepcopy()(递归复制所有层级)。
import copy
deep_copy = copy.deepcopy(nested)
deep_copy[0][0] = 99 # 原列表不受影响
六、本周练习与答案
练习1:过滤列表中的奇数
用列表推导式从numbers = [1, 2, 3, 4, 5]中提取偶数。
答案:
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers) # 输出:[2, 4]
练习2:合并两个有序列表
合并list1 = [1, 3, 5]和list2 = [2, 4, 6]为有序列表。
答案:
merged = sorted(list1 + list2)
print(merged) # 输出:[1, 2, 3, 4, 5, 6]
练习3:二维列表转置
将matrix = [[1, 2], [3, 4], [5, 6]]转置为[[1, 3, 5], [2, 4, 6]]。
答案:
transposed = list(zip(*matrix))
print(list(transposed)) # 输出:[(1, 3, 5), (2, 4, 6)]
七、总结与下一步
- 核心收获:
- 掌握列表的基础操作(索引、切片、增删改查)。
- 熟悉列表推导式、内置方法和常见错误处理。
- 能用列表解决实际问题(数据处理、模拟数据结构)。
- 上一篇: Python教程-列表复制
- 下一篇: python入门到脱坑经典案例—清空列表
猜你喜欢
- 2025-08-03 Python列表方法append和extend的区别
- 2025-08-03 Python列表集合操作介绍?
- 2025-08-03 python数据类型之列表、字典、元组、集合及操作
- 2025-08-03 Python学不会来打我(11)列表list详解:用法、场景与类型转换
- 2025-08-03 Python骚操作从列表推导和生成器表达式开始
- 2025-08-03 Python中的列表详解及示例
- 2025-08-03 Python自动化办公应用学习笔记20—列表排序、列表推导式
- 2025-08-03 python入门012:复制列表
- 2025-08-03 Python列表元素求偶:简洁实现与解析
- 2025-08-03 python入门经典案例—list列表翻转列表
- 08-05python决策树用于分类和回归问题实际应用案例
- 08-05用Python实现机器学习算法之k-决策树算法并做注释说明
- 08-05Python机器学习之决策树分类详解,保姆级教学!
- 08-05用Python进行机器学习(5)-决策树
- 08-05决策树算法原理与Python实现
- 08-05python学习笔记 1.常见的数据类型
- 08-05从进阶语法到实战应用:Python中级修炼指南
- 08-05Python 面试问题:运算符
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)