
列表(List)是Python中最核心、最灵活的内置数据结构之一。本文将全面解析Python列表,涵盖从基础概念、元素访问、更新操作,到常用函数、多维列表以及高效的列表生成式等核心知识点,并辅以多个实战练习,助你彻底掌握这一强大的数据容器。
一、列表概述
列表是Python中一种有序、可变的序列结构,用于存储一系列元素的集合。其核心特点如下:
- 结构:使用方括号
[] 定界,元素间用半角逗号分隔。
- 元素类型:列表支持“多态”,即其元素可以是任何数据类型,且同一列表内的元素类型无需一致。
- 灵活性:列表甚至可以嵌套其他列表,构成更复杂的数据结构。
基础示例
list1 = [1, 5, 7, 3] # 纯整数列表
list2 = [1, ‘李洪文’, ‘男’, 18] # 混合类型列表
stuff = [2 , ‘hello’ , 2.718 , [1 , 2 , 3]] # 嵌套列表
二、访问列表元素
1、通过索引访问单个列表元素
列表元素可通过索引访问,支持正向索引(从0开始)和逆向索引(从-1开始)。
fruits = [‘apple‘, ‘banana‘, ‘cherry‘]
print(fruits[0]) # 输出: apple
print(fruits[-1]) # 输出: cherry
2、通过切片运算访问列表元素
切片操作用于获取列表的一个子序列,语法为 list[start:stop:step]。
nums = [0, 1, 2, 3, 4, 5, 6]
print(nums[1:4]) # 输出: [1, 2, 3]
print(nums[::2]) # 输出: [0, 2, 4, 6] (步长为2)
三、更新列表元素
列表是可变对象,创建后可对其元素进行增、删、改操作。
(一)追加元素
使用 append() 方法在列表末尾添加单个元素。
fruits.append(‘orange‘) # fruits 变为 [‘apple‘, ‘banana‘, ‘cherry‘, ‘orange‘]
(二)修改元素
直接通过索引赋值来修改指定位置的元素。
fruits[1] = ‘blueberry‘ # fruits 变为 [‘apple‘, ‘blueberry‘, ‘cherry‘]
(三)删除元素
1、使用remove()方法删除列表指定元素 - 按值删除
删除第一个匹配到的指定值。
fruits.remove(‘banana‘)
2、使用del语句删除列表指定元素 - 按索引删除
del fruits[0] # 删除索引为0的元素
(四)插入元素
使用 insert(index, element) 方法在指定索引前插入元素。
fruits.insert(1, ‘mango‘) # 在索引1处插入 ‘mango‘
四、列表基本操作
(一)加法操作 - 实际上是连接操作
+ 运算符用于连接两个列表,生成一个新列表。
list_a = [1, 2]
list_b = [3, 4]
list_c = list_a + list_b # list_c 为 [1, 2, 3, 4]
(二)乘法操作 - 实际上是重复操作
* 运算符用于重复列表元素。
list_d = [‘Hi‘] * 4 # list_d 为 [‘Hi‘, ‘Hi‘, ‘Hi‘, ‘Hi‘]
(三)检查成员 - 实际上是查询操作
使用 in 或 not in 关键字判断元素是否存在于列表中。
print(‘apple‘ in fruits) # 输出: True
五、作用于列表的常用函数
Python提供了一些内置函数用于操作列表。
len(list):返回列表长度(元素个数)。
max(list) / min(list):返回列表中最大/最小的元素。
sum(list):对列表中的数值型元素求和。
补充:可以使用 dir(__builtins__) 查看所有Python内置对象和函数。
课堂练习:歌手得分计算程序
计算一个歌手的最终得分(去掉一个最高分和一个最低分后的平均分)。
scores = [9.5, 8.0, 9.0, 9.5, 8.5, 7.0, 9.0]
scores.remove(max(scores))
scores.remove(min(scores))
final_score = sum(scores) / len(scores)
print(f“最终得分: {final_score:.2f}“)
在此基础上,可以扩展功能,例如确保评委输入分数在有效范围内,或循环处理多个歌手的分数,这涉及基础算法与逻辑控制的应用。
六、列表常用方法
除了上文提到的 append(), insert(), remove(),列表还有其他实用方法:
copy():返回列表的一个浅拷贝。
index(x):返回元素 x 第一次出现的索引,若不存在则引发 ValueError。
count(x):返回元素 x 在列表中出现的次数。
sort():对原列表进行排序。
reverse():将列表中的元素反向排列。
七、二维列表
(一)二维列表概念
当列表的元素也是列表时,就构成了二维列表(可类比表格或矩阵)。
(二)创建二维列表
1、通过追加一维列表来生成二维列表
matrix = []
matrix.append([1, 2, 3])
matrix.append([4, 5, 6])
2、通过直接赋值生成二维列表
matrix = [[1, 2, 3], [4, 5, 6]]
(三)访问二维列表
1、访问行
row = matrix[0] # 获取第一行: [1, 2, 3]
2、访问元素
element = matrix[1][2] # 获取第二行第三列的元素: 6
八、列表生成式
列表生成式(List Comprehension)提供了一种简洁、高效创建列表的方法,是Python编程的特色与优势之一。
(一)列表生成式概念
其基本语法为:[expression for item in iterable if condition]
(二)案例演示
任务1:分离奇偶数列表
original = [1, 2, 3, 4, 5, 6]
evens = [x for x in original if x % 2 == 0] # [2, 4, 6]
odds = [x for x in original if x % 2 != 0] # [1, 3, 5]
任务2:列表元素翻倍(两种方式)
# 传统循环
doubled_traditional = []
for x in original:
doubled_traditional.append(x * 2)
# 列表生成式
doubled_comprehension = [x * 2 for x in original] # 更简洁
任务3:条件判断与复杂转换
result = [x * 10 if x % 2 != 0 else x * 5 for x in original]
# 结果: [10, 10, 30, 20, 50, 30]
九、课后作业
- 元素查询:编写函数,在一个一维列表中线性查询某个数是否存在,并返回其所有索引位置。
- 斐波那契数列:使用列表存储并输出斐波那契数列的前30项,要求每行输出5个数。这是经典的算法与数列练习题。
- 杨辉三角:利用二维列表(数组)打印出指定层数的杨辉三角形。这综合运用了Python的列表嵌套和循环控制能力。
通过系统学习列表及其高级特性,你将为处理更复杂的数据结构与算法问题打下坚实基础。