元素码农
基础
UML建模
数据结构
算法
设计模式
网络
TCP/IP协议
HTTPS安全机制
WebSocket实时通信
数据库
sqlite
postgresql
clickhouse
后端
rust
go
java
php
mysql
redis
mongodb
etcd
nats
zincsearch
前端
浏览器
javascript
typescript
vue3
react
游戏
unity
unreal
C++
C#
Lua
App
android
ios
flutter
react-native
安全
Web安全
测试
软件测试
自动化测试 - Playwright
人工智能
Python
langChain
langGraph
运维
linux
docker
工具
git
svn
🌞
🌙
目录
▶
Python基础语法
Python环境安装与配置
第一个Python程序
变量与数据类型
字面量详解
基本运算符
流程控制语句
包管理与虚拟环境
▶
Python数据结构
列表(List)详解
元组(Tuple)使用指南
字典(Dict)完全解析
集合(Set)操作大全
▶
函数与模块
函数定义与参数传递
Lambda表达式
模块导入与使用
常用内置函数
▶
面向对象编程
类与对象
继承与多态
魔术方法解析
装饰器原理与应用
▶
Python类型系统
类型注解(Type Hints)
Pydantic基础
Pydantic高级特性
typing模块基础
泛型类型详解
泛型类详解
Callable类型详解
Awaitable类型详解
类型变量与约束
类型别名与Protocol
TypedDict详解
Annotated类型
Reducer类型
类型检查工具使用
类型注解最佳实践
▶
关键字
pass关键字
raise关键字
global关键字
nonlocal关键字
yield关键字
assert关键字
with关键字
async/await关键字
▶
包管理
pip包管理基础
虚拟环境管理
包管理工具对比
requirements.txt规范
依赖管理与requirements.txt
setup.py配置说明
Poetry项目管理工具
Conda包管理系统
打包与发布Python包
PyPI发布流程
私有PyPI仓库
▶
Python高级特性
迭代器与生成器
多线程编程
协程与异步IO
元编程入门
反射机制详解
描述符协议
上下文管理器协议
垃圾回收机制
内存管理深度解析
性能优化指南
▶
文件与异常处理
文件读写操作
JSON数据解析
异常处理机制
上下文管理器
发布时间:
2025-03-24 12:27
↑
☰
# Python列表(List)详解 本文将详细介绍Python中的列表(List)数据结构,包括列表的创建、访问、修改、常用操作以及最佳实践等内容。 ## 列表基础 ### 列表的创建 ```python # 空列表 empty_list = [] empty_list2 = list() # 包含元素的列表 numbers = [1, 2, 3, 4, 5] fruits = ["apple", "banana", "orange"] # 混合类型列表 mixed = [1, "hello", 3.14, True] # 使用range()创建列表 range_list = list(range(5)) # [0, 1, 2, 3, 4] # 列表推导式 squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16] ``` ### 列表索引和切片 ```python # 列表索引(从0开始) fruits = ["apple", "banana", "orange", "grape", "kiwi"] print(fruits[0]) # 第一个元素:apple print(fruits[-1]) # 最后一个元素:kiwi # 列表切片 [start:end:step] print(fruits[1:3]) # ['banana', 'orange'] print(fruits[::2]) # ['apple', 'orange', 'kiwi'] print(fruits[::-1]) # 反转列表 ``` ## 列表操作 ### 添加元素 ```python # append():在列表末尾添加元素 fruits = ["apple", "banana"] fruits.append("orange") print(fruits) # ['apple', 'banana', 'orange'] # insert():在指定位置插入元素 fruits.insert(1, "grape") print(fruits) # ['apple', 'grape', 'banana', 'orange'] # extend():合并两个列表 more_fruits = ["kiwi", "mango"] fruits.extend(more_fruits) print(fruits) # ['apple', 'grape', 'banana', 'orange', 'kiwi', 'mango'] ``` ### 删除元素 ```python # remove():删除指定元素 fruits = ["apple", "banana", "orange", "banana"] fruits.remove("banana") # 只删除第一个匹配项 print(fruits) # ['apple', 'orange', 'banana'] # pop():删除并返回指定位置的元素 removed = fruits.pop(1) # 删除索引1的元素 print(removed) # orange print(fruits) # ['apple', 'banana'] # del语句:删除指定位置的元素 fruits = ["apple", "banana", "orange", "grape"] del fruits[1] print(fruits) # ['apple', 'orange', 'grape'] # clear():清空列表 fruits.clear() print(fruits) # [] ``` ### 修改元素 ```python # 通过索引修改 fruits = ["apple", "banana", "orange"] fruits[1] = "grape" print(fruits) # ['apple', 'grape', 'orange'] # 通过切片修改 numbers = [1, 2, 3, 4, 5] numbers[1:4] = [20, 30, 40] print(numbers) # [1, 20, 30, 40, 5] ``` ## 列表方法 ### 查找和计数 ```python # index():查找元素的索引 fruits = ["apple", "banana", "orange", "banana"] print(fruits.index("banana")) # 1(第一个匹配项的索引) # count():计算元素出现的次数 print(fruits.count("banana")) # 2 # in运算符:检查元素是否存在 print("apple" in fruits) # True print("kiwi" in fruits) # False ``` ### 排序和反转 ```python # sort():对列表进行排序 numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] numbers.sort() print(numbers) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] # sort()带key参数 fruits = ["banana", "apple", "orange", "kiwi"] fruits.sort(key=len) # 按长度排序 print(fruits) # ['kiwi', 'apple', 'banana', 'orange'] # reverse():反转列表 fruits.reverse() print(fruits) # ['orange', 'banana', 'apple', 'kiwi'] # sorted():创建新的排序列表 original = [3, 1, 4, 1, 5] sorted_list = sorted(original) print(original) # [3, 1, 4, 1, 5](原列表不变) print(sorted_list) # [1, 1, 3, 4, 5](新列表已排序) ``` ## 列表推导式 ```python # 基本列表推导式 squares = [x**2 for x in range(5)] print(squares) # [0, 1, 4, 9, 16] # 带条件的列表推导式 even_squares = [x**2 for x in range(10) if x % 2 == 0] print(even_squares) # [0, 4, 16, 36, 64] # 嵌套列表推导式 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flattened = [num for row in matrix for num in row] print(flattened) # [1, 2, 3, 4, 5, 6, 7, 8, 9] ``` ## 实际应用示例 ### 1. 待办事项列表 ```python def todo_list(): tasks = [] while True: print("\n待办事项管理") print("1. 添加任务") print("2. 查看任务") print("3. 完成任务") print("4. 退出") choice = input("请选择操作(1-4): ") if choice == "1": task = input("输入新任务: ") tasks.append(task) print("任务已添加!") elif choice == "2": if tasks: print("\n当前任务:") for i, task in enumerate(tasks, 1): print(f"{i}. {task}") else: print("暂无任务") elif choice == "3": if tasks: print("\n当前任务:") for i, task in enumerate(tasks, 1): print(f"{i}. {task}") try: index = int(input("输入要完成的任务编号: ")) - 1 if 0 <= index < len(tasks): completed = tasks.pop(index) print(f"任务 '{completed}' 已完成!") else: print("无效的任务编号!") except ValueError: print("请输入有效的数字!") else: print("暂无任务") elif choice == "4": print("感谢使用!再见!") break else: print("无效的选择,请重试!") ``` ### 2. 成绩统计 ```python def grade_statistics(): grades = [] # 输入成绩 while True: grade = input("输入成绩(或按Enter结束): ") if not grade: break try: grade = float(grade) if 0 <= grade <= 100: grades.append(grade) else: print("成绩必须在0-100之间!") except ValueError: print("请输入有效的数字!") if not grades: print("没有输入成绩!") return # 计算统计数据 average = sum(grades) / len(grades) highest = max(grades) lowest = min(grades) # 计算成绩分布 distribution = { "A(90-100)": len([g for g in grades if g >= 90]), "B(80-89)": len([g for g in grades if 80 <= g < 90]), "C(70-79)": len([g for g in grades if 70 <= g < 80]), "D(60-69)": len([g for g in grades if 60 <= g < 70]), "F(0-59)": len([g for g in grades if g < 60]) } # 输出统计结果 print(f"\n成绩统计:") print(f"平均分: {average:.2f}") print(f"最高分: {highest}") print(f"最低分: {lowest}") print("\n成绩分布:") for grade, count in distribution.items(): print(f"{grade}: {count}人") ``` ## 最佳实践 1. **选择合适的方法** ```python # 添加元素 # 好的写法 fruits.append("apple") # 添加单个元素 fruits.extend(more_fruits) # 添加多个元素 # 避免的写法 fruits += ["apple"] # 性能较差 ``` 2. **使用列表推导式** ```python # 好的写法 squares = [x**2 for x in range(10)] # 避免的写法 squares = [] for x in range(10): squares.append(x**2) ``` 3. **合理使用切片** ```python # 好的写法 first_three = fruits[:3] # 获取前三个元素 last_three = fruits[-3:] # 获取后三个元素 # 避免的写法 first_three = fruits[0:3] # 不必要的0 ``` 4. **列表复制** ```python # 好的写法 new_list = old_list.copy() # 或 list(old_list) # 避免的写法 new_list = old_list # 这只是引用 ``` 5. **使用enumerate** ```python # 好的写法 for i, item in enumerate(fruits): print(f"{i}: {item}") # 避免的写法 for i in range(len(fruits)): print(f"{i}: {fruits[i]}") ``` 通过本文的学习,你应该已经掌握了Python列表的基本用法和进阶技巧。列表是Python中最常用的数据结构之一,灵活运用这些操作可以帮助你更高效地处理数据。继续练习这些概念,你会逐渐熟练掌握它们在实际编程中的应用!