专栏其他内容:
LeetCode Hot100 中 enumerate 函数的妙用(2026.2月版)
LeetCode Hot100数据结构背景知识之列表(List)Python2026新版
LeetCode Hot100数据结构背景知识之元组(Tuple)Python2026新版
LeetCode Hot100数据结构背景知识之集合(Set)Python2026新版
LeetCode Hot100数据结构背景知识之字典(Dictionary)Python2026新版
一、元组(tuple):不可变的有序序列
1.1 数据结构背景
元组是 Python 中不可变的有序序列 ,是用于存储多个元素的容器,用小括号 () 包裹元素(单元素元组需加逗号),元素可以是不同类型(如 int、str、甚至嵌套元组),但一旦创建,元素的个数、值、顺序均无法修改(核心区别于列表 list),只可以查询。
1.2 核心特性
-
不可变性 :一旦创建,元素的个数、值、顺序均无法修改。刷题中常用于存储"固定不变的常量",比如表示二维坐标 (x, y)、题目中的固定边界值(如最大长度、目标阈值)。示例:
coord = (1, 2),若尝试coord[0] = 3会直接报错。 -
有序性 :元素按插入顺序排列,支持索引(正索引、负索引)和切片,用法与list完全一致。刷题中可快速获取有序数据的片段,比如从tuple中提取坐标的x轴:
x = coord[0]。 -
可哈希、可嵌套 :tuple本身可哈希(前提是内部元素均为可哈希对象,如int、str、tuple),可作为dict的key;同时支持嵌套,比如表示三维坐标
(1, 2, (3, 4)),刷题中可用于存储复杂的固定结构数据。
1.4 tuple常用函数
tuple的函数设计贴合其"不可变"特性,无修改类函数,核心常用函数均为查询、统计类,适配LeetCode刷题中的数据处理场景,无需死记硬背,掌握4个高频函数即可:
-
len(tuple) :统计元组中元素的个数,与list的len()用法一致,刷题中常用于判断元组长度(如坐标维度、参数个数)。示例:
coord = (1, 2, 3),len(coord)返回3,可快速判断是否为三维坐标。 -
tuple.count(x) :统计元组中元素x出现的次数,刷题中可用于判断元组中是否存在重复元素(辅助去重判断)。示例:
t = (1, 2, 2, 3),t.count(2)返回2,可快速统计目标元素频次。 -
tuple.index(x, start=0, end=len(tuple)) :查找元素x在元组中的第一个索引位置,可指定查找范围(start为起始索引,end为结束索引,左闭右开),刷题中可快速定位目标元素的位置。示例:
t = (1, 2, 3, 2),t.index(2)返回1,t.index(2, 2)返回3;若元素不存在则报错,刷题中可结合try-except规避异常。 -
sorted(tuple) :将元组转为有序列表(注意:不修改原元组,返回新列表),刷题中用于对有序但需排序的元组数据进行排序(如坐标排序、数值排序)。示例:
t = (3, 1, 2),sorted(t)返回[1, 2, 3],若需保留tuple类型,可再转为tuple:tuple(sorted(t))。
补充说明:tuple无专属的转换函数,若需将其他类型转为tuple,可使用tuple(iterable)(如tuple([1,2,3]) 将列表转为元组),刷题中常用于将可变列表转为不可变元组,作为字典的key或集合的元素。
注意点
❌ 误区1:认为tuple"完全不可变"------若tuple内部包含可变元素(如list),则该可变元素可修改。例如 t = (1, [2, 3]),可执行 t[1].append(4),此时t变为 (1, [2, 3, 4])。刷题中需注意,若需完全不可变的结构,避免在tuple中嵌套list。
❌ 误区2:创建单元素tuple时遗漏逗号------t = (1) 会被解析为int类型1,正确写法是 t = (1,)(逗号是tuple的标志,而非括号)。刷题中若误写,可能导致类型错误(如将int作为dict的key)。