Python之“可变”的tuple
讲解
前面我们看到了tuple一旦创建就不能修改。现在,我们来看一个“可变”的tuple:
>>> t = ('a', 'b', ['A', 'B'])
注意到 t 有 3 个元素:‘a’,'b’和一个list:[‘A’, ‘B’]。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:
>>> L = t[2]
然后,我们把list的两个元素改一改:
>>> L[0] = 'X'
>>> L[1] = 'Y'
再看看tuple的内容:
>>> print t
('a', 'b', ['X', 'Y'])
不是说tuple一旦定义后就不可变了吗?怎么现在又变了?
别急,我们先看看定义的时候tuple包含的3个元素:
当我们把list的元素’A’和’B’修改为’X’和’Y’后,tuple变为:
表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
任务
定义了tuple:
t = (‘a’, ‘b’, [‘A’, ‘B’])
由于 t 包含一个list元素,导致tuple的内容是可变的。能否修改上述代码,让tuple内容不可变?
代码
t = ('a', 'b', ('A', 'B'))
print t
本文部分摘自慕课《初识Python》课程
Python之“可变”的tuple相关推荐
- python建立tuple_Python之创建tuple和“可变”的tuple
tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里同学的名称,用tuple表示如 ...
- Python之List和Tuple类型(入门3)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407682.html 本文出自:[Edwin博客园] Python之List和Tuple类型 1. Pyth ...
- Python基础(list和tuple)可变集合和‘不可变’集合
list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...
- Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点、python的可变不可变的数据类型、赋值浅拷贝深拷贝区别
ML岗位面试:10.11下午-上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点.python的可变不可变的数据类型.赋值浅拷贝深拷贝区别 Interview:算法岗位 ...
- python的可变参数 *args 和关键字参数**kw
*args:非关键字参数,传入任意个不需要包含参数名的参数,参数实际以tuple形式传入 **kw:是关键字参数,传入任意个要带参数名的参数,参数实际以dict传入 例子 >>> d ...
- goupby 两个值 结果变了_一道问题引出的python中可变数据类型与不可变数据类型...
一. 问题的提出 我们先来看两个对比 第一道题,当对象为整数时,最终结果:b = 2, a = 1,b的变化没有引起a的变化 第二道题,当对象为字典时,最终结果:a = {"name&quo ...
- python基础 list和tuple
文章目录 一.list 1.len()函数可以获得list元素的个数 2.索引从0开始 3.末尾追加 append('xx') 4.也可以把元素插入到指定的位置,比如索引号为1的位置(insert) ...
- python 基础 list和 tuple dict和set
list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. classmates = ['Michael', 'Bob', 'Tracy'] 要 ...
- 【Python】list和tuple 区别比较
列表 List classmates = ['Michael', 'Bob', 'Tracy'] 元组 Tuple tuple一旦初始化就不能修改,比如同样是列出同学的名字: >>> ...
最新文章
- 超便携式截屏录屏软件FastStone Capture
- 数据包分片和重组 MTU与MSS
- Telnet连接详细步骤
- nginx的安装与配置
- guid会重复吗_知网查重会查重表格吗
- JAVA 框架-Spring
- MFC中使用CTabCtrl或CPropertySheet实现标签页
- Bochs 调试命令
- C# 获取二维数组的元素个数;获取行数,列数
- java 遍历文件夹 性能_Java函数式编程(十一):遍历目录
- 扑克牌游戏----花色从大到小按黑桃(Spade)、红桃(Heart)、梅花(Club)、方块(Diamond)排列
- 嵌入式Qt-做一个秒表
- 灵格斯(lingoes)词霸 + Acapela破解语音包(法语,德语,西班牙语,美国英语)
- 顺丰控股亏损:或时效件面临见顶危机,或下沉市场厮杀,或为220亿定增设局?
- WPF中的MVVM模式
- 数据分析师课程(ArcGIS按属性选数据、各种数据分析案例)
- 虚拟机RedHatLinux9安装Oralce92全过程
- 关于盛大热血传奇(传奇2)!!!
- 杂项:MIME(多用途互联网邮件扩展类型)百科
- powerpoint快速插入多张图片
热门文章
- mongodb 下载地址,mongodb.dll 下载
- HDOJ HDU 1849 Rabbit and Grass ACM 1849 IN HDU
- java基础编程思想题目2
- 学习笔记(1):activiti6.0从入门到精通-设置流程变量(概述)
- 饭团(0):提升效率的开发工具
- 田永强:优秀的JavaScript模块是怎样炼成的
- 漫谈Google的Native Client(NaCl)技术(二)–技术篇(兼谈LLVM)
- 访问控制权限和 ------java命名规范
- 【重识 HTML + CSS】CSS 特性
- powershell自动化操作AD域、Exchange邮箱系列(1)——powershell 简介