Python 列表(List)方法全解:附带注释与案例
1. 列表简介列表List是 Python 中最基本、最常用的数据结构之一。它是一个有序、可变的序列可以存储任意类型的元素并且支持动态增删改查。掌握列表的各种方法是高效使用 Python 进行数据处理和算法实现的基础。2. 列表方法汇总附带注释与案例以下将按功能分类详细汇总列表的所有内置方法每个方法都配有注释说明和实际案例。2.1 添加元素append(x)在列表末尾添加一个元素。# 案例向列表末尾添加元素 fruits [apple, banana] fruits.append(orange) print(fruits) # 输出[apple, banana, orange]extend(iterable)将可迭代对象中的所有元素添加到列表末尾。# 案例扩展列表 list1 [1, 2, 3] list2 [4, 5, 6] list1.extend(list2) print(list1) # 输出[1, 2, 3, 4, 5, 6] 也可以扩展其他可迭代对象 list1.extend((7, 8)) print(list1) # 输出[1, 2, 3, 4, 5, 6, 7, 8]insert(i, x)在指定索引位置插入一个元素。# 案例在指定位置插入元素 numbers [10, 20, 40, 50] numbers.insert(2, 30) # 在索引2处插入30 print(numbers) # 输出[10, 20, 30, 40, 50] 索引超出范围时会插入到末尾或开头 numbers.insert(10, 60) # 插入到末尾 print(numbers) # 输出[10, 20, 30, 40, 50, 60]2.2 删除元素remove(x)删除列表中第一个值为 x 的元素如果元素不存在则抛出 ValueError。# 案例删除指定值的元素 colors [red, green, blue, green] colors.remove(green) print(colors) # 输出[red, blue, green]只删除第一个green 如果要删除的元素不存在会报错 try: colors.remove(yellow) except ValueError as e: print(f错误{e}) # 输出错误list.remove(x): x not in listpop([i])删除并返回指定索引位置的元素。如果不指定索引默认删除并返回最后一个元素。# 案例删除并返回元素 stack [1, 2, 3, 4, 5] 删除最后一个元素 last_item stack.pop() print(f删除的元素{last_item}) # 输出删除的元素5 print(f剩余列表{stack}) # 输出剩余列表[1, 2, 3, 4] 删除指定索引的元素 second_item stack.pop(1) print(f删除的元素{second_item}) # 输出删除的元素2 print(f剩余列表{stack}) # 输出剩余列表[1, 3, 4]clear()清空列表中的所有元素。# 案例清空列表 data [1, 2, 3, 4, 5] print(f清空前{data}) # 输出清空前[1, 2, 3, 4, 5] data.clear() print(f清空后{data}) # 输出清空后[]2.3 查找与统计index(x[, start[, end]])返回第一个值为 x 的元素的索引。可以指定搜索的起始和结束位置。# 案例查找元素索引 letters [a, b, c, d, e, c, f] 查找第一个c的索引 idx1 letters.index(c) print(f第一个c的索引{idx1}) # 输出第一个c的索引2 从索引3开始查找c idx2 letters.index(c, 3) print(f从索引3开始查找c的索引{idx2}) # 输出从索引3开始查找c的索引5 在指定范围内查找 idx3 letters.index(d, 1, 4) print(f在[1,4)范围内查找d的索引{idx3}) # 输出在[1,4)范围内查找d的索引3count(x)返回元素 x 在列表中出现的次数。# 案例统计元素出现次数 numbers [1, 2, 3, 2, 4, 2, 5, 2] count_2 numbers.count(2) print(f数字2出现的次数{count_2}) # 输出数字2出现的次数4 count_7 numbers.count(7) print(f数字7出现的次数{count_7}) # 输出数字7出现的次数02.4 排序与反转sort(keyNone, reverseFalse)对列表进行原地排序。# 案例列表排序 nums [3, 1, 4, 1, 5, 9, 2, 6] 默认升序排序 nums.sort() print(f升序排序{nums}) # 输出升序排序[1, 1, 2, 3, 4, 5, 6, 9] 降序排序 nums.sort(reverseTrue) print(f降序排序{nums}) # 输出降序排序[9, 6, 5, 4, 3, 2, 1, 1] 使用key参数自定义排序规则 words [apple, Banana, cherry, date] words.sort() # 默认按ASCII码排序大写字母在前 print(f默认排序{words}) # 输出默认排序[Banana, apple, cherry, date] words.sort(keystr.lower) # 忽略大小写排序 print(f忽略大小写排序{words}) # 输出忽略大小写排序[apple, Banana, cherry, date]reverse()将列表中的元素原地反转。# 案例反转列表 original [1, 2, 3, 4, 5] original.reverse() print(f反转后{original}) # 输出反转后[5, 4, 3, 2, 1]2.5 复制与创建copy()返回列表的浅拷贝。# 案例列表浅拷贝 original [1, 2, [3, 4]] copied original.copy() print(f原列表{original}) # 输出原列表[1, 2, [3, 4]] print(f拷贝列表{copied}) # 输出拷贝列表[1, 2, [3, 4]] 修改原始列表的顶层元素 original[0] 100 print(f修改原列表后{original}) # 输出修改原列表后[100, 2, [3, 4]] print(f拷贝列表{copied}) # 输出拷贝列表[1, 2, [3, 4]]未受影响 修改嵌套列表浅拷贝共享引用 original[2][0] 300 print(f修改原列表嵌套元素后{original}) # 输出修改原列表嵌套元素后[100, 2, [300, 4]] print(f拷贝列表{copied}) # 输出拷贝列表[1, 2, [300, 4]]受影响3. 综合应用案例下面通过一个综合案例展示多个列表方法的组合使用# 案例学生成绩管理系统简化版 class StudentManager: def __init__(self): self.students [] self.scores [] def add_student(self, name, score): 添加学生及其成绩 self.students.append(name) self.scores.append(score) print(f已添加学生{name}成绩{score}) def remove_student(self, name): 移除指定学生 if name in self.students: idx self.students.index(name) self.students.pop(idx) self.scores.pop(idx) print(f已移除学生{name}) else: print(f学生 {name} 不存在) def get_top_students(self, n3): 获取成绩前n名的学生 # 创建(成绩, 姓名)的元组列表 combined list(zip(self.scores, self.students)) # 按成绩降序排序 combined.sort(reverseTrue) # 返回前n名 return [name for _, name in combined[:n]] def get_average_score(self): 计算平均分 if not self.scores: return 0 return sum(self.scores) / len(self.scores) def display_all(self): 显示所有学生信息 print(\n 所有学生信息 ) for i, (name, score) in enumerate(zip(self.students, self.scores), 1): print(f{i}. {name}: {score}分) print(f平均分{self.get_average_score():.1f}) 使用示例 manager StudentManager() manager.add_student(张三, 85) manager.add_student(李四, 92) manager.add_student(王五, 78) manager.add_student(赵六, 95) manager.display_all() 输出 所有学生信息 张三: 85分 李四: 92分 王五: 78分 赵六: 95分 平均分87.5 top3 manager.get_top_students(3) print(f\n成绩前三名{top3}) # 输出成绩前三名[赵六, 李四, 张三] manager.remove_student(王五) manager.display_all() 输出 所有学生信息 张三: 85分 李四: 92分 赵六: 95分 平均分90.74. 注意事项与最佳实践性能考虑append()和pop()的时间复杂度为 O(1)而insert(0, x)和remove(x)的时间复杂度为 O(n)。浅拷贝陷阱copy()是浅拷贝嵌套结构会共享引用需要深拷贝时使用copy.deepcopy()。列表推导式创建新列表时优先使用列表推导式代码更简洁高效。in 操作符检查元素是否存在使用if x in list比count(x) 0更高效。切片操作除了方法列表切片list[start:end:step]也是强大的工具。5. 总结Python 列表提供了丰富的方法来满足各种数据操作需求。通过合理组合这些方法可以高效地处理有序数据集合。建议在实际编程中多加练习熟练掌握每个方法的使用场景和注意事项。

相关新闻