Python list 常用操作(长文讲解)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
在 Python 编程语言中,列表(List)是功能强大且灵活的数据结构之一。它能够存储多个有序且可变的元素,广泛应用于数据处理、算法实现等场景。无论是编程初学者还是中级开发者,掌握 Python list 的常用操作都是提升效率的关键。本文将从基础到进阶,系统性地介绍列表的核心操作方法,并通过实际案例帮助读者深入理解。
一、创建与初始化列表
列表的创建方式多样,可以根据具体需求选择不同的初始化方法。
1.1 基础创建语法
列表可以通过方括号 []
直接创建,元素用逗号分隔:
empty_list = []
print("空列表:", empty_list)
numbers = [1, 2, 3, 4, 5]
mixed_list = ["apple", 3.14, True, [1, 2]] # 支持混合数据类型
比喻:将列表想象成一个“可扩展的购物车”,可以放入不同种类的商品(元素),并且随时添加或删除。
1.2 通过 list()
构造函数创建
对于可迭代对象(如字符串、元组),可以使用 list()
函数将其转换为列表:
string = "hello"
chars = list(string) # 输出: ['h', 'e', 'l', 'l', 'o']
tuple_data = (10, 20, 30)
tuple_to_list = list(tuple_data) # 输出: [10, 20, 30]
1.3 列表推导式(List Comprehension)
这是一种简洁高效的初始化方式,常用于生成符合特定规则的列表:
squares = [x**2 for x in range(10)] # 输出: [0, 1, 4, ..., 81]
even_squares = [x**2 for x in range(10) if x % 2 == 0]
二、增删改查:基础操作详解
列表的核心功能是动态管理元素,以下操作覆盖了最常见的增删改查场景。
2.1 添加元素(Add Elements)
2.1.1 append()
:尾部追加
fruits = ["apple", "banana"]
fruits.append("orange") # 输出: ["apple", "banana", "orange"]
特点:时间复杂度为 O(1),适合在列表末尾快速添加元素。
2.1.2 insert(index, value)
:指定位置插入
numbers = [1, 3, 4]
numbers.insert(1, 2) # 输出: [1, 2, 3, 4]
比喻:如同在书架上插入一本新书,后续书籍会自动后移。
2.1.3 extend()
:合并列表
list_a = [1, 2]
list_b = [3, 4]
list_a.extend(list_b) # 输出: [1, 2, 3, 4]
2.2 删除元素(Remove Elements)
2.2.1 remove(value)
:按值删除
pets = ["cat", "dog", "bird", "dog"]
pets.remove("dog") # 输出: ["cat", "bird", "dog"]
注意:若值不存在会报错,且仅删除第一个匹配项。
2.2.2 pop(index)
:按索引删除并返回元素
stack = [5, 4, 3, 2, 1]
popped = stack.pop(0) # 输出: 5,列表变为 [4, 3, 2, 1]
应用场景:模拟“栈”结构的后进先出(LIFO)。
2.2.3 del
关键字:删除指定位置或整个列表
colors = ["red", "green", "blue"]
del colors[1] # 删除第二个元素,输出: ["red", "blue"]
del colors # 删除整个变量,后续使用会报错
2.3 修改元素(Modify Elements)
通过索引直接访问并修改元素:
grades = [85, 90, 78]
grades[2] = 88 # 输出: [85, 90, 88]
注意事项:Python 列表是可变对象,修改操作会直接改变原列表。
2.4 查询元素(Query Elements)
2.4.1 in
关键字:判断是否存在
vegetables = ["carrot", "cucumber", "spinach"]
print("carrot" in vegetables) # 输出: True
2.4.2 index(value)
:获取元素索引
numbers = [10, 20, 30, 20]
print(numbers.index(20)) # 输出: 1
注意:若元素重复,返回第一个匹配的索引。
2.4.3 遍历列表:for
循环与索引
for fruit in ["apple", "banana", "cherry"]:
print(fruit)
for i in range(len(fruits)):
print(f"索引 {i}: {fruits[i]}")
三、高级操作与实用技巧
3.1 切片(Slicing)
切片允许快速提取子列表,语法为 list[start:stop:step]
:
letters = ['a', 'b', 'c', 'd', 'e']
print(letters[1:3]) # 输出: ['b', 'c']
print(letters[::-1]) # 反转列表: ['e', 'd', 'c', 'b', 'a']
3.2 排序与逆序
3.2.1 sort()
:原地排序
nums = [5, 3, 8, 1]
nums.sort() # 输出: [1, 3, 5, 8]
nums.sort(reverse=True) # 降序
3.2.2 reverse()
:原地反转
words = ["Python", "is", "awesome"]
words.reverse() # 输出: ["awesome", "is", "Python"]
3.3 合并与复制
3.3.1 合并列表
a = [1, 2]
b = [3, 4]
merged = a + b # 输出: [1, 2, 3, 4]
3.3.2 深拷贝与浅拷贝
original = [1, [2, 3]]
shallow_copy = original.copy() # 浅拷贝
deep_copy = original[:] # 切片也可实现浅拷贝
import copy
deep_copy = copy.deepcopy(original)
3.4 统计与查找
scores = [85, 90, 85, 95]
print(len(scores)) # 输出: 4
print(scores.count(85)) # 输出: 2
四、常见问题与最佳实践
4.1 索引越界
访问不存在的索引会引发 IndexError
:
my_list = [1, 2]
try:
print(my_list[2])
except IndexError:
print("索引超出范围")
4.2 列表推导式优化
避免使用 for
循环逐个添加元素,改用列表推导式:
result = []
for x in range(10):
if x % 2 == 0:
result.append(x**2)
result = [x**2 for x in range(10) if x % 2 == 0]
4.3 性能注意事项
- 插入/删除头部:
pop(0)
或insert(0, ...)
时间复杂度为 O(n),频繁操作时考虑使用deque
结构。 - 避免修改正在遍历的列表:可能导致逻辑错误或无限循环。
五、实战案例:列表操作综合应用
案例 1:统计字符频率
def count_characters(text):
char_count = {}
for char in text:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
return char_count
print(count_characters("hello world"))
案例 2:合并并去重列表
def merge_unique(list1, list2):
combined = list1 + list2
unique = list(dict.fromkeys(combined)) # 利用字典去重
return unique
print(merge_unique([1, 2], [2, 3])) # 输出: [1, 2, 3]
六、结论
Python list 的常用操作是编程中不可或缺的技能。通过本文的讲解,读者可以掌握列表的创建、增删改查、高级操作及常见问题的解决方案。建议读者通过实际编写代码加深理解,并尝试将列表与其他数据结构(如字典、集合)结合使用,以解决更复杂的编程任务。掌握这些技巧后,你将能够更高效地处理数据、优化算法,并为后续学习面向对象编程或框架打下坚实基础。
关键词布局说明:
- 标题直接包含“Python list 常用操作”
- 正文通过章节标题和操作描述自然融入关键词
- 案例部分结合实际场景强化关键词的实用性
- 避免堆砌,确保语义连贯自然