当前位置: 首页 > news >正文

在Python中,不可变(immutable)数据类型是指一旦创建后,其内容不能被修改的数据类型

在Python中,不可变(immutable)数据类型是指一旦创建后,其内容不能被修改的数据类型。

  • A.list:可变(mutable),可以添加、删除、修改元素;
  • B.dict:可变,键值对可以增删改;
  • C.set:可变,元素可以添加或移除;
  • D.tuple:✅ 不可变,创建后不能修改其元素(包括增、删、改),若包含可变对象(如列表),该对象自身可变,但tuple的引用不可变。

因此,正确答案是:D. tuple

# 示例验证t=(1,2,3)# t[0] = 99 # ❌ TypeError: 'tuple' object does not support item assignment# t.append(4) # ❌ AttributeError: 'tuple' object has no attribute 'append'# 对比 listl=[1,2,3]l[0]=99# ✅ 允许l.append(4)# ✅ 允许

是的,即使元组中包含一个列表,整个元组本身仍然被视为不可变类型

✅ 原因:
“不可变”指的是元组对象自身的结构和元素引用不可更改——即不能增删元素、不能对元组索引赋值、不能调用修改方法(如append())。但若元组中某个元素本身是可变对象(如listdictset),该嵌套对象的内容仍可被原地修改,因为元组只保存对其的引用,不控制其内部状态。

⚠️ 注意:这不违背元组的不可变性,因为元组并未“改变自身引用”,只是它所引用的可变对象发生了变化。

🔍 示例说明:

t=(1,[2,3],"hello")print(t)# (1, [2, 3], 'hello')# ✅ 允许:修改嵌套列表的内容(列表自身可变)t[1].append(4)print(t)# (1, [2, 3, 4], 'hello') —— 元组内容看似变了,但元组对象未被“重新赋值”或“结构调整”# ❌ 禁止:试图替换元组中的元素# t[1] = [5, 6] # TypeError: 'tuple' object does not support item assignment# ❌ 禁止:试图给元组添加元素# t += (99,) # 这会创建新元组,原元组不变;原t对象地址已变(若重新赋值)# 验证身份(id):original_id=id(t)t=t+(99,)# 创建新元组 → 新idprint(id(t)==original_id)# False → 原元组未被修改,只是变量指向了新对象

📌 关键结论:

  • 元组的不可变性是浅层的(shallow immutability),仅保证其直接元素的引用不可变;
  • 不保证嵌套可变对象的深层内容不可变;
  • 正因如此,含可变对象的元组不能作为字典的键(除非该元组在生命周期内其嵌套可变对象未被修改,但Python不检查运行时内容,故仍会报错):
d={}# d[t] = "value" # ❌ TypeError: unhashable type: 'list' —— 因为t含list,整体不可哈希

http://www.rkmt.cn/news/1499481.html

相关文章:

  • 2026 香奈儿名牌包包回收规则,无锡门店回收对哪些款式更热忠 - 奢侈品回收评测
  • 【Uniapp 插件 una-banner 】轮播图 / banner / swiper
  • 2026上海百达翡丽回收价格怎么算?全套、单表、成色差价明细解析 - 奢侈品回收评测
  • 素材去水印实用技巧:按场景选择工具,兼顾效率与画质
  • 伺服电机仿真(3):PMSM在三相静止坐标系下的数学模型
  • 系统规划与管理师选老师:案例不好的人,需要什么样的老师?
  • 新装修的石材为什么开裂?5大原因+预防措施(2026版) - 宁波融诚石业
  • 2026窑炉气体分析系统选购指南:全国优质厂家排名与实战经验分享 - 品研笔录
  • Python之encrypti0n包语法、参数和实际应用案例
  • 如何利用 OpenCV 将图像显示在对话框窗口上
  • 2026合肥市生成式引擎优化(GEO)技术能力权威测评报告|百分制量化技术版 - 安徽工业
  • 2026 成都爱马仕香奈儿回收指南,热门经典款行情与估价细节解析 - 奢侈品回收评测
  • 鸿蒙原生应用实战(三):笔记详情与编辑页面的路由与CRUD
  • 南宁黄金回收全攻略:精选正规门店,教你安全高价变现 - 奢侈品回收评测
  • 华三无线认证实战:绿洲平台对接中的苹果/安卓手机优化与微信白名单配置详解
  • 仙人掌-圆方树学习笔记
  • 2026年粉末包装机厂家排行:全国优质品牌推荐与详细使用攻略 - 品研笔录
  • 用安信可ESP32S3开发板做个无线监控:手把手教你驱动USB摄像头并实现Wi-Fi图传
  • MCP(Model Context Protocol)详细介绍
  • 广州市顺风搬家服务有限公司车辆类型有哪些?载重、尺寸、适用场景完整对比 - 生活服务
  • [charger][sc7061]配置
  • 用 Vim 以只读模式打开文件的几种方式
  • 高性能计算中的输出重定向:Bash与SLURM的协同工作
  • 道里正规商家榜单,收的顶领跑区域黄金回收行业 - 奢侈品回收测评
  • 哈尔滨道里高价回收店铺TOP榜,2026黄金回收收的顶稳居榜首梯队 - 奢侈品回收测评
  • 宁波石材加工厂怎么选?本地源头工厂7个筛选标准(2026版) - 宁波融诚石业
  • 别再只盯着TPM了!从国产TPCM实战出发,聊聊可信启动的静态度量与动态度量到底怎么玩
  • 用CppAD+IPOPT搞定一个简单的非线性优化问题:从数学公式到C++代码的完整流程
  • 通关‘头歌’线性回归后,我总结了5个NumPy实战技巧与1个常见坑
  • 后端技术栈深度解析:从入门到精通的完整指南