LeetCode Hot100数据结构背景知识之元组(Tuple)Python2026新版

专栏其他内容:

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)。

相关推荐
kali-Myon3 小时前
2025春秋杯网络安全联赛冬季赛-day2
python·安全·web安全·ai·php·pwn·ctf
晚霞的不甘3 小时前
Flutter for OpenHarmony 实现计算几何:Graham Scan 凸包算法的可视化演示
人工智能·算法·flutter·架构·开源·音视频
㓗冽3 小时前
60题之内难题分析
开发语言·c++·算法
大江东去浪淘尽千古风流人物3 小时前
【VLN】VLN仿真与训练三要素 Dataset,Simulators,Benchmarks(2)
深度学习·算法·机器人·概率论·slam
Olamyh3 小时前
【 超越 ReAct:手搓 Plan-and-Execute (Planner) Agent】
python·ai
deepxuan3 小时前
Day7--python
开发语言·python
静听山水3 小时前
Redis核心数据结构-ZSet
数据结构·redis
曲幽3 小时前
FastAPI不止于API:手把手教你用Jinja2打造动态Web页面
python·fastapi·backend·jinja2·full stack·template engine·web development
禹凕4 小时前
Python编程——进阶知识(多线程)
开发语言·爬虫·python