1. 列表的定义与创建在 Python 中列表List是一种有序、可变的数据结构可以存储任意类型的元素。列表使用方括号[]表示元素之间用逗号分隔。1.1 创建空列表# 方法一使用方括号empty_list1[]# 方法二使用 list() 函数empty_list2list()1.2 创建带初始值的列表# 包含不同类型元素的列表mixed_list[1,hello,3.14,True]# 嵌套列表nested_list[[1,2],[3,4],[5,6]]# 使用列表推导式创建列表squares[x**2forxinrange(10)]# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]2. 列表索引Python 列表支持正向索引和反向索引索引从 0 开始。2.1 正向索引fruits[apple,banana,cherry,date,elderberry]print(fruits[0])# 输出: appleprint(fruits[2])# 输出: cherryprint(fruits[4])# 输出: elderberry2.2 反向索引fruits[apple,banana,cherry,date,elderberry]print(fruits[-1])# 输出: elderberry最后一个元素print(fruits[-2])# 输出: date倒数第二个元素print(fruits[-5])# 输出: apple第一个元素2.3 索引越界处理fruits[apple,banana,cherry]try:print(fruits[5])# 索引越界exceptIndexErrorase:print(f索引错误:{e})# 输出: 索引错误: list index out of range3. 列表切片切片操作可以获取列表的子集语法为list[start:stop:step]。3.1 基本切片numbers[0,1,2,3,4,5,6,7,8,9]# 获取前5个元素print(numbers[0:5])# 输出: [0, 1, 2, 3, 4]print(numbers[:5])# 输出: [0, 1, 2, 3, 4]start默认为0# 获取第3个到最后一个元素print(numbers[2:])# 输出: [2, 3, 4, 5, 6, 7, 8, 9]# 获取最后3个元素print(numbers[-3:])# 输出: [7, 8, 9]3.2 带步长的切片numbers[0,1,2,3,4,5,6,7,8,9]# 每隔一个元素取一个print(numbers[::2])# 输出: [0, 2, 4, 6, 8]# 从索引1开始每隔两个元素取一个print(numbers[1::2])# 输出: [1, 3, 5, 7, 9]# 反转列表print(numbers[::-1])# 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]3.3 切片创建新列表original[1,2,3,4,5]slicedoriginal[1:4]# [2, 3, 4]# 修改切片不会影响原列表sliced[0]99print(original)# 输出: [1, 2, 3, 4, 5]print(sliced)# 输出: [99, 3, 4]4. 列表遍历Python 提供了多种遍历列表的方式。4.1 使用 for 循环fruits[apple,banana,cherry]# 直接遍历元素forfruitinfruits:print(fruit)# 输出:# apple# banana# cherry4.2 使用 enumerate() 获取索引和值fruits[apple,banana,cherry]forindex,fruitinenumerate(fruits):print(f索引{index}:{fruit})# 输出:# 索引 0: apple# 索引 1: banana# 索引 2: cherry# 指定起始索引forindex,fruitinenumerate(fruits,start1):print(f第{index}个水果:{fruit})4.3 使用 range() 和 len()fruits[apple,banana,cherry]foriinrange(len(fruits)):print(ffruits[{i}] {fruits[i]})# 输出:# fruits[0] apple# fruits[1] banana# fruits[2] cherry4.4 使用 while 循环fruits[apple,banana,cherry]i0whileilen(fruits):print(fruits[i])i14.5 列表推导式遍历numbers[1,2,3,4,5]# 对每个元素进行运算squares[x**2forxinnumbers]# [1, 4, 9, 16, 25]# 带条件的遍历even_squares[x**2forxinnumbersifx%20]# [4, 16]5. 列表常用方法5.1 添加元素fruits[apple,banana]# append() - 在末尾添加单个元素fruits.append(cherry)print(fruits)# 输出: [apple, banana, cherry]# extend() - 在末尾添加多个元素合并列表fruits.extend([date,elderberry])print(fruits)# 输出: [apple, banana, cherry, date, elderberry]# insert() - 在指定位置插入元素fruits.insert(1,blueberry)print(fruits)# 输出: [apple, blueberry, banana, cherry, date, elderberry]5.2 删除元素fruits[apple,banana,cherry,banana,date]# remove() - 删除第一个匹配的元素fruits.remove(banana)print(fruits)# 输出: [apple, cherry, banana, date]# pop() - 删除并返回指定位置的元素removedfruits.pop(1)# 删除索引1的元素print(f删除的元素:{removed})# 输出: 删除的元素: cherryprint(fruits)# 输出: [apple, banana, date]# pop() 不传参数 - 删除并返回最后一个元素lastfruits.pop()print(f最后一个元素:{last})# 输出: 最后一个元素: date# del 语句 - 删除指定位置的元素delfruits[0]print(fruits)# 输出: [banana]# clear() - 清空列表fruits.clear()print(fruits)# 输出: []5.3 查找和统计numbers[1,2,3,4,5,3,2,1]# index() - 返回第一个匹配元素的索引print(numbers.index(3))# 输出: 2print(numbers.index(3,3))# 输出: 5从索引3开始查找# count() - 统计元素出现次数print(numbers.count(1))# 输出: 2print(numbers.count(3))# 输出: 2print(numbers.count(10))# 输出: 0不存在# in 操作符 - 检查元素是否存在print(3innumbers)# 输出: Trueprint(10innumbers)# 输出: False5.4 排序和反转numbers[3,1,4,1,5,9,2]# sort() - 原地排序修改原列表numbers.sort()print(numbers)# 输出: [1, 1, 2, 3, 4, 5, 9]# sort() 降序排序numbers.sort(reverseTrue)print(numbers)# 输出: [9, 5, 4, 3, 2, 1, 1]# sorted() - 返回新排序列表不修改原列表unsorted[3,1,4,1,5]sorted_listsorted(unsorted)print(f原列表:{unsorted})# 输出: 原列表: [3, 1, 4, 1, 5]print(f排序后:{sorted_list})# 输出: 排序后: [1, 1, 3, 4, 5]# reverse() - 原地反转列表numbers[1,2,3,4,5]numbers.reverse()print(numbers)# 输出: [5, 4, 3, 2, 1]5.5 复制列表original[1,2,3,[4,5]]# 浅拷贝 - copy() 或 list() 或切片shallow_copy1original.copy()shallow_copy2list(original)shallow_copy3original[:]# 修改浅拷贝中的嵌套列表会影响原列表shallow_copy1[3][0]99print(original)# 输出: [1, 2, 3, [99, 5]]print(shallow_copy1)# 输出: [1, 2, 3, [99, 5]]# 深拷贝 - 需要 import copyimportcopy deep_copycopy.deepcopy(original)deep_copy[3][0]100print(original)# 输出: [1, 2, 3, [99, 5]]print(deep_copy)# 输出: [1, 2, 3, [100, 5]]5.6 其他常用方法# len() - 获取列表长度fruits[apple,banana,cherry]print(len(fruits))# 输出: 3# max() 和 min() - 获取最大最小值numbers[3,1,4,1,5,9]print(max(numbers))# 输出: 9print(min(numbers))# 输出: 1# sum() - 求和print(sum(numbers))# 输出: 23# any() 和 all() - 检查元素真假bool_list[True,False,True]print(any(bool_list))# 输出: True至少一个为Trueprint(all(bool_list))# 输出: False不是所有都为True6. 列表操作的综合示例6.1 学生成绩管理系统# 初始化学生成绩列表grades[85,92,78,90,88,76,95,82]# 1. 添加新成绩grades.append(87)grades.extend([91,84])# 2. 计算平均分averagesum(grades)/len(grades)print(f平均分:{average:.2f})# 3. 找出最高分和最低分print(f最高分:{max(grades)})print(f最低分:{min(grades)})# 4. 排序成绩sorted_gradessorted(grades,reverseTrue)print(f成绩排名:{sorted_grades})# 5. 统计优秀成绩≥90分excellent[gradeforgradeingradesifgrade90]print(f优秀成绩数量:{len(excellent)})print(f优秀成绩:{excellent})6.2 购物车应用classShoppingCart:def__init__(self):self.items[]self.prices[]defadd_item(self,item,price):self.items.append(item)self.prices.append(price)print(f已添加:{item}- ¥{price})defremove_item(self,item):ifiteminself.items:indexself.items.index(item)self.items.pop(index)priceself.prices.pop(index)print(f已移除:{item}- ¥{price})else:print(f商品 {item} 不在购物车中)defcalculate_total(self):returnsum(self.prices)defshow_cart(self):print(\n购物车内容:)fori,(item,price)inenumerate(zip(self.items,self.prices),1):print(f{i}.{item}- ¥{price})print(f总计: ¥{self.calculate_total()})# 使用示例cartShoppingCart()cart.add_item(苹果,5.0)cart.add_item(香蕉,3.0)cart.add_item(牛奶,8.5)cart.show_cart()cart.remove_item(香蕉)cart.show_cart()7. 总结Python 列表是编程中最常用的数据结构之一掌握其基本操作对于高效编程至关重要定义灵活可以存储不同类型的数据支持嵌套索引直观支持正向和反向索引访问元素快速切片强大可以方便地获取子列表支持步长参数遍历多样支持多种遍历方式包括 for 循环、enumerate 等方法丰富提供了添加、删除、查找、排序等完整的方法集列表的易用性和灵活性使其成为 Python 数据处理的核心工具。在实际开发中结合列表推导式、内置函数和切片操作可以写出既简洁又高效的代码。建议读者通过实际练习来巩固这些知识尝试用列表解决实际问题如数据处理、算法实现等从而更好地掌握 Python 列表的强大功能。