Python 列表:基础知识与应用场景
1. 列表(List)的概念
列表是 Python 中最常用的数据结构之一,用于存储一组有序的元素。可以存储不同类型的数据,甚至可以存储其他列表(嵌套列表)。列表是可变类型,可以随时修改、添加或删除元素。
2. 创建列表
-
空列表:
empty_list = []
-
包含元素的列表:
fruits = ['apple', 'banana', 'cherry'] numbers = [1, 2, 3, 4, 5] mixed_list = [1, 'apple', 3.14, [1, 2, 3]]
-
通过
list()
函数创建:my_list = list('hello') print(my_list) # ['h', 'e', 'l', 'l', 'o']
3. 访问列表元素
-
通过索引访问:
first_fruit = fruits[0] # 'apple' last_fruit = fruits[-1] # 'cherry'
-
通过切片访问:
sublist = fruits[1:3] # ['banana', 'cherry']
4. 修改列表
-
添加元素:
append()
:在列表末尾添加单个元素。fruits.append('orange') print(fruits) # ['apple', 'banana', 'cherry', 'orange']
extend()
:将一个可迭代对象的所有元素添加到列表末尾。fruits.extend(['mango', 'grapes']) print(fruits) # ['apple', 'banana', 'cherry', 'orange', 'mango', 'grapes']
insert()
:在指定位置插入元素。fruits.insert(1, 'kiwi') # 在索引1的位置插入 'kiwi' print(fruits) # ['apple', 'kiwi', 'banana', 'cherry', 'orange', 'mango', 'grapes']
-
删除元素:
remove()
:删除列表中第一个匹配的元素。fruits.remove('banana') print(fruits) # ['apple', 'kiwi', 'cherry', 'orange', 'mango', 'grapes']
pop()
:删除并返回指定位置的元素。如果不指定索引,默认删除并返回最后一个元素。popped_fruit = fruits.pop() print(fruits) # ['apple', 'kiwi', 'banana', 'cherry'] print(popped_fruit) # 'grapes'
clear()
:清空列表。fruits.clear() print(fruits) # []
5. 列表常用方法
-
count()
:统计指定元素出现的次数。fruits = ['apple', 'banana', 'cherry', 'banana'] print(fruits.count('banana')) # 2
-
index()
:返回指定元素首次出现的位置。print(fruits.index('cherry')) # 2
-
sort()
:对列表进行排序。fruits = ['banana', 'apple', 'cherry'] fruits.sort() print(fruits) # ['apple', 'banana', 'cherry']
-
reverse()
:反转列表。fruits.reverse() print(fruits) # ['cherry', 'banana', 'apple']
-
copy()
:返回列表的浅拷贝。new_fruits = fruits.copy()
6. 列表推导式(List Comprehension)
列表推导式允许从一个已有的列表创建另一个列表,通常用于过滤和变换。
-
基础用法:
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]
7. 嵌套列表
-
创建嵌套列表:
nested_list = [[1, 2], [3, 4], [5, 6]]
-
访问嵌套列表中的元素:
print(nested_list[1][0]) # 3
8. 列表的应用场景
-
数据存储与处理: 用于存储和处理需要按顺序存储的数据(如学生成绩、商品列表等)。
scores = [75, 80, 95, 90] average_score = sum(scores) / len(scores)
-
迭代与过滤: 在很多应用中,列表会用于存储并迭代遍历数据,例如用列表推导式对数据进行筛选或变换。
# 获取所有偶数 numbers = [1, 2, 3, 4, 5, 6] even_numbers = [x for x in numbers if x % 2 == 0]
-
处理变长数据: 列表用于存储变长的数据,尤其适合需要频繁插入或删除操作的场景。
9. 常见的易错点与优化
-
列表切片时索引越界:
# 错误的写法 fruits = ['apple', 'banana', 'cherry'] print(fruits[5]) # IndexError: list index out of range
解决方法:
在访问索引时,确保索引不会越界,或使用异常处理。 -
对列表进行排序时,可能影响原列表:
fruits = ['banana', 'apple', 'cherry'] fruits.sort() # 排序会改变原列表 print(fruits) # ['apple', 'banana', 'cherry']
解决方法:
使用sorted()
函数可以返回排序后的新列表,不会改变原列表。sorted_fruits = sorted(fruits)
-
浅拷贝与深拷贝:
list1 = [[1, 2], [3, 4]] list2 = list1.copy() # 浅拷贝 list2[0][0] = 10 print(list1) # [[10, 2], [3, 4]],因为是浅拷贝,内部列表引用相同
解决方法:
对于嵌套列表,使用copy.deepcopy()
来创建深拷贝。import copy list2 = copy.deepcopy(list1)
分类:
python / basics
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)