Python零基础到精通教程,列表(list)与元组(tuple)

张开发
2026/4/13 16:45:38 15 分钟阅读

分享文章

Python零基础到精通教程,列表(list)与元组(tuple)
列表和元组是 Python 中最常用的序列数据结构都能存储多个不同类型的数据核心区别列表可修改元组不可修改。本文从基础用法、核心操作、实战区别全方面讲解新手也能快速掌握。一、基础认知列表 vs 元组特性列表 (list)元组 (tuple)定义符号方括号[]圆括号()可修改性可变增删改不可变创建后不能修改语法示例[1, 2, abc](1, 2, abc)速度较慢较快用途存储需要动态修改的数据存储固定不变的数据二、列表 (list) 全用法列表是有序、可变的序列支持存储数字、字符串、列表等任意数据类型。1. 创建列表# 1. 空列表 empty_list [] # 2. 普通列表混合数据类型 my_list [10, Python, 3.14, True] # 3. 嵌套列表列表里套列表 nested_list [1, [2, 3], hello]2. 访问列表元素索引 / 切片Python 索引从 0 开始支持正向 / 反向索引、切片截取。fruits [苹果, 香蕉, 橙子, 葡萄] # 1. 索引访问单个元素 print(fruits[0]) # 输出苹果第一个元素 print(fruits[-1]) # 输出葡萄最后一个元素 # 2. 切片访问多个元素 print(fruits[1:3]) # 输出[香蕉, 橙子]左闭右开不包含结束索引 print(fruits[:2]) # 输出[苹果, 香蕉]从头开始 print(fruits[2:]) # 输出[橙子, 葡萄]到结尾结束3. 列表核心操作增 / 删 / 改 / 查1修改元素列表最核心功能直接通过索引赋值修改fruits [苹果, 香蕉, 橙子] fruits[1] 芒果 # 把第二个元素改成芒果 print(fruits) # 输出[苹果, 芒果, 橙子]2添加元素fruits [苹果, 香蕉] # append()末尾添加1个元素 fruits.append(橙子) # extend()末尾添加多个元素 fruits.extend([葡萄, 西瓜]) # insert()指定位置插入元素 fruits.insert(1, 芒果) # 在索引1的位置插入芒果 print(fruits) # 输出[苹果, 芒果, 香蕉, 橙子, 葡萄, 西瓜]3删除元素fruits [苹果, 香蕉, 橙子, 葡萄] # del根据索引删除 del fruits[1] # remove()根据元素值删除 fruits.remove(葡萄) # pop()删除并返回指定索引元素默认删最后一个 last fruits.pop() print(fruits) # 输出[苹果, 橙子]4查询与统计nums [1, 2, 3, 2, 4, 2] # 查找元素第一次出现的索引 print(nums.index(2)) # 输出1 # 统计元素出现次数 print(nums.count(2)) # 输出3 # 列表长度 print(len(nums)) # 输出6 # 判断元素是否在列表中 print(3 in nums) # 输出True4. 列表高级操作nums [3, 1, 4, 2] # 排序默认升序 nums.sort() print(nums) # 输出[1,2,3,4] # 反转列表 nums.reverse() print(nums) # 输出[4,3,2,1] # 清空列表 nums.clear() print(nums) # 输出[]三、元组 (tuple) 全用法元组是有序、不可变的序列创建后不能增、删、改元素只能查询。1. 创建元组# 1. 空元组 empty_tuple () # 2. 普通元组 my_tuple (10, Python, 3.14) # 3. 只有1个元素的元组必须加逗号 single_tuple (5,) # 4. 省略括号Python允许 no_bracket_tuple 1, 2, 3 # 5. 嵌套元组 nested_tuple (1, (2, 3), hello)⚠️重点(5)是整数(5,)才是元组2. 访问元组元素和列表完全一样元组只支持查询不支持修改索引 / 切片用法和列表一致fruits (苹果, 香蕉, 橙子, 葡萄) print(fruits[0]) # 输出苹果 print(fruits[-1]) # 输出葡萄 print(fruits[1:3]) # 输出(香蕉, 橙子)3. 元组常用方法元组不可变只有查询、统计方法没有增删改方法nums (1, 2, 3, 2, 4, 2) # 统计元素出现次数 print(nums.count(2)) # 输出3 # 查找元素索引 print(nums.index(3)) # 输出2 # 元组长度 print(len(nums)) # 输出64. 元组的 “特殊修改”元组本身不可变但如果元组里嵌套列表列表可以修改# 元组里包含列表 t (1, [2, 3], 4) t[1].append(5) # 修改元组里的列表 print(t) # 输出(1, [2, 3, 5], 4)四、列表与元组的相互转换实际开发中经常需要互相切换# 列表转元组 my_list [1,2,3] t tuple(my_list) print(t) # 输出(1,2,3) # 元组转列表 my_tuple (4,5,6) l list(my_tuple) l.append(7) print(l) # 输出[4,5,6,7]五、核心区别与使用场景1. 最本质区别列表可变 → 可以随时增删改元素元组不可变 → 创建后元素固定不能修改2. 如何选择用列表数据需要动态修改如用户列表、购物车、日志用元组数据固定不变如配置信息、坐标、函数返回多个值3. 性能小知识元组比列表更轻量、速度更快不需要维护修改状态只读数据优先用元组。六、使用场景1、列表list典型使用场景适合动态变化的数据列表 可以随时增删改的 “动态集合”场景 1购物车随时添加 / 删除商品# 购物车随时加、删、改数量 cart [苹果, 牛奶] # 添加商品 cart.append(面包) cart.append(鸡蛋) # 删除商品 cart.remove(牛奶) print(当前购物车, cart) # 输出当前购物车 [苹果, 面包, 鸡蛋]场景 2用户列表新增 / 删除用户users [张三, 李四] # 新用户注册 users.append(王五) # 用户注销 users.remove(张三) print(在线用户, users) # 输出在线用户 [李四, 王五]场景 3日志记录不断追加内容log [] log.append(2025-01-01 系统启动) log.append(2025-01-01 用户登录) log.append(2025-01-01 数据保存成功) print(系统日志) for item in log: print(item)场景 4表单数据动态收集form_data [] form_data.append(姓名小明) form_data.append(年龄20) form_data.append(城市上海)场景 5游戏分数实时更新scores [90, 85, 95] scores[1] 99 # 修改分数 scores.append(100) # 新增分数2、元组tuple典型使用场景适合固定不变的数据元组 一旦创建就不能改的 “固定数据”场景 1坐标 / 经纬度永远不变# 北京坐标固定不变 beijing (116.40, 39.90) # 错误不能修改 # beijing[0] 100 # 会报错 print(北京经度, beijing[0]) print(北京纬度, beijing[1])场景 2固定配置信息程序配置不允许改# 数据库配置不能随便改 DB_CONFIG (localhost, 3306, root, 123456) # 读取配置 host, port, user, pwd DB_CONFIG print(连接数据库, host, port)场景 3函数返回多个值Python 最常用# 函数返回 姓名年龄城市用元组最安全 def get_user_info(): name 小明 age 20 city 北京 return name, age, city # 自动变成元组 # 接收结果 info get_user_info() print(info) # (小明, 20, 北京)场景 4字典的 key必须不可变# 坐标可以当字典 key列表不行 position {(1, 2): 起点, (3, 4): 终点} print(position[(1, 2)]) # 输出起点场景 5固定枚举选项如性别、状态GENDERS (男, 女, 未知) STATUS (正常, 禁用, 锁定)场景 6保证数据安全不被意外修改# 考试答案不能被篡改 answers (A, C, B, D)总结列表[]可变支持增删改查适合动态数据元组()不可变仅支持查询适合固定数据索引 / 切片用法完全一致都能存储任意类型数据列表转元组tuple(列表)元组转列表list(元组)单个元素元组必须加逗号(5,)

更多文章