拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Python列表与元组:有序序列的完整指南

Python列表与元组有序序列的完整指南列表和元组是Python中最常用的有序序列类型本篇将系统讲解它们的用法、区别及实战场景。一、列表List列表是Python中最常用的数据结构可以存储任意类型的元素且支持增删改查。1. 创建列表# 空列表empty_list[]empty_list2list()# 有元素的列表numbers[1,2,3,4,5]mixed[1,hello,3.14,True]# 可以混合不同类型nested[[1,2],[3,4]]# 嵌套列表2. 访问元素索引与切片fruits[苹果,香蕉,橙子,葡萄,西瓜]# 索引从0开始print(fruits[0])# 苹果print(fruits[-1])# 西瓜负索引从末尾开始# 切片 [起始:结束:步长]print(fruits[1:3])# [香蕉, 橙子]不包含结束索引print(fruits[:3])# [苹果, 香蕉, 橙子]省略起始默认0print(fruits[2:])# [橙子, 葡萄, 西瓜]省略结束到末尾print(fruits[::2])# [苹果, 橙子, 西瓜]步长2print(fruits[::-1])# [西瓜, 葡萄, 橙子, 香蕉, 苹果]反转3. 修改元素fruits[苹果,香蕉,橙子]fruits[0]草莓print(fruits)# [草莓, 香蕉, 橙子]4. 添加元素fruits[苹果,香蕉]# append末尾添加单个元素fruits.append(橙子)print(fruits)# [苹果, 香蕉, 橙子]# insert指定位置插入fruits.insert(1,草莓)print(fruits)# [苹果, 草莓, 香蕉, 橙子]# extend批量添加拼接另一个列表fruits.extend([葡萄,西瓜])print(fruits)# [苹果, 草莓, 香蕉, 橙子, 葡萄, 西瓜]5. 删除元素fruits[苹果,香蕉,橙子,香蕉]# remove删除第一个匹配的元素fruits.remove(香蕉)print(fruits)# [苹果, 橙子, 香蕉]# pop删除指定索引的元素默认最后一个并返回该元素removedfruits.pop()print(removed)# 香蕉print(fruits)# [苹果, 橙子]# del按索引删除delfruits[0]print(fruits)# [橙子]# clear清空列表fruits.clear()print(fruits)# []6. 常用方法numbers[3,1,4,1,5,9,2,6]# 统计元素出现次数print(numbers.count(1))# 2# 查找元素索引不存在会报错print(numbers.index(5))# 4# 排序原地修改numbers.sort()print(numbers)# [1, 1, 2, 3, 4, 5, 6, 9]# 降序排序numbers.sort(reverseTrue)print(numbers)# [9, 6, 5, 4, 3, 2, 1, 1]# 反转numbers.reverse()# 复制new_listnumbers.copy()7. 列表推导式重点列表推导式是Python的特色语法简洁高效地创建列表。# 基础形式[表达式 for 变量 in 可迭代对象]squares[x**2forxinrange(1,6)]print(squares)# [1, 4, 9, 16, 25]# 带条件筛选evens[xforxinrange(1,11)ifx%20]print(evens)# [2, 4, 6, 8, 10]# 带if-elseresult[偶数ifx%20else奇数forxinrange(1,6)]print(result)# [奇数, 偶数, 奇数, 偶数, 奇数]# 嵌套推导式展平二维列表matrix[[1,2,3],[4,5,6],[7,8,9]]flat[numforrowinmatrixfornuminrow]print(flat)# [1, 2, 3, 4, 5, 6, 7, 8, 9]二、元组Tuple元组和列表类似但不可修改immutable。1. 创建元组# 空元组empty_tuple()# 有元素的元组point(3,4)colors(红,绿,蓝)# 单元素元组需要逗号重要single(1,)# 这是元组not_tuple(1)# 这是整数# 可以省略括号data1,2,3print(type(data))# class tuple2. 元组的操作point(3,4)# 访问和列表一样print(point[0])# 3# 切片print(point[:1])# (3,)# 拼接new_tuplepoint(5,6)print(new_tuple)# (3, 4, 5, 6)# 重复print(point*2)# (3, 4, 3, 4)# 长度print(len(point))# 2⚠️ 元组不能修改元素不能添加、删除否则会报错TypeError: tuple object does not support item assignment3. 元组解包# 基本解包x,y(3,4)print(x,y)# 3 4# 交换变量本质是元组解包a,b1,2a,bb,a# 带*的解包first,*rest[1,2,3,4,5]print(first)# 1print(rest)# [2, 3, 4, 5]*head,last[1,2,3,4,5]print(head)# [1, 2, 3, 4]print(last)# 5三、列表 vs 元组如何选择特性列表List元组Tuple可变性可变不可变语法[]()性能稍慢更快内存更小安全性可被修改数据安全可作为字典键不可以可以适用场景需要增删改的数据固定不变的数据、函数多返回值选择建议数据需要变化 → 用列表数据固定不变 → 用元组如坐标、配置项函数返回多个值 → 用元组四、实战学生成绩统计# 学生成绩管理scores[(张三,85),(李四,92),(王五,78),(赵六,95),(钱七,88)]# 计算平均分totalsum(scorefor_,scoreinscores)averagetotal/len(scores)print(f平均分:{average:.1f})# 找出最高分和最低分highestmax(scores,keylambdax:x[1])lowestmin(scores,keylambdax:x[1])print(f最高分:{highest[0]}({highest[1]}分))print(f最低分:{lowest[0]}({lowest[1]}分))# 成绩排序降序rankedsorted(scores,keylambdax:x[1],reverseTrue)print(\n成绩排名:)fori,(name,score)inenumerate(ranked,1):print(f第{i}名:{name}-{score}分)# 筛选优秀学生90分以上excellent[nameforname,scoreinscoresifscore90]print(f\n优秀学生:{excellent})运行结果平均分: 87.6 最高分: 赵六(95分) 最低分: 王五(78分) 成绩排名: 第1名: 赵六 - 95分 第2名: 李四 - 92分 第3名: 钱七 - 88分 第4名: 张三 - 85分 第5名: 王五 - 78分 优秀学生: [李四, 赵六]五、常见坑点单元素元组忘记逗号(1)是整数(1,)才是元组列表作为默认参数函数默认参数用列表会导致共享应用None遍历列表时删除元素会导致索引错乱应遍历副本或倒序删除浅拷贝问题new old是引用修改一个另一个也变应用.copy()或old[:]# 错误示范浅拷贝a[1,2,[3,4]]ba.copy()b[2][0]99print(a)# [1, 2, [99, 4]] 嵌套元素还是共享的# 深拷贝importcopy ccopy.deepcopy(a)六、课后练习编写程序输入一组数字输出其中的最大值、最小值和平均值编写程序将列表[1, 2, 3, 4, 5]中的每个元素平方生成新列表编写程序去除列表中的重复元素至少用两种方法七、小结本篇详细讲解了列表和元组的用法包括增删改查、切片、推导式、元组解包等核心操作。列表适用于可变数据元组适用于固定数据合理选择能让代码更高效安全。下一篇预告《Python字典与集合键值对与去重的艺术》本专栏持续更新中欢迎点赞、收藏、关注三连支持
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门