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内容不可变?

[‘A‘, ‘B‘]是list,因此内容可变,但(‘A‘, ‘B‘)的内容是不可变的。

参考代码:

t = (‘a‘, ‘b‘, (‘A‘, ‘B‘))
print t

原文地址:https://www.cnblogs.com/quanweiru/p/8361202.html

时间: 2024-10-28 22:52:38

Python之“可变”的tuple的相关文章

Python之创建tuple和“可变”的tuple

Python之创建tuple tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里同学的名称,用tuple表示如下: >>> t = ('Adam', 'Lisa', 'Bart') 创建tuple和创建list唯一不同之处是用( )替代了[ ]. 现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法.所以,新同学没法

Python顺序集合之 tuple

本文内容摘录自慕课网<Python入门> 1.tuple特性 tuple是另一种有序的列表,中文翻译为“ 元组 ”.tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. >>> t = ('Adam', 'Lisa', 'Bart') 创建tuple和创建list唯一不同之处是用( )替代了[ ]. 现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法.所以,新元素没法直接往 tuple 中添加

python list列表、tuple元祖

list Python内置的一种数据类型是列表:list. list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> classmates = ['hu','jian','li'] >>> classmates ['hu', 'jian', 'li'] 变量 classmates 就是一个list.用 len() 函数可以获得list元素的个数: >>> len(classmates)

【Python】可变对象和不可变对象

Python在heap中分配的对象分成两类:可变对象和不可变对象.所谓可变对象是指,对象的内容是可变的,例如list.而不可变的对象则相反,表示其内容不可变. 不可变对象:int,string,float,tuple 可变对象   :list,dictionary 一.不可变对象 由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的. 从上面得知,不可变的对象的特征没有变,依然是不可变对象,变的只是创建了新对象,改变了变量的对象引用. 输

一入python深似海--tuple和set

tuple(元组) 另一种有序列表叫元组:tuple.tuple和list非常类似,但是tuple一旦初始化就不能修改,tuple属于不可变对象.比如同样是列出同学的名字: >>> classmates = ('Michael', 'Bob', 'Tracy') 现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法.其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成

Python中List和Tuple类型

a = 'python' print('hello,', a or 'world') b = '' print ('hello,', b or 'world') print('-----------------------------------') 创建list L = ['Adam',95.5,'Lisa',85,'Bart',59] print('创建list:',L) print('-----------------------------------') #按照索引访问list pri

Python学习----List和Tuple类型

目录   1.List 2.Tuple 一.List List是Python中的一种内置的数据类型,它代表的是一个列表,它是一种有序的集合,可以随时添加删除和查找里面的元素.表示方法为[ ] ps:由于Python是动态语言,List里面是不区分数据类型的.随便什么数据类型都可以放进去 1.创建List L = ['hello',91,'你好',12] print(L) #['hello', 91, '你好', 12] 2.按照索引访问List中的元素 因为List中的元素是有序集合,所以我们可

Python中的list,tuple,dict和set

List list的创建与检索 Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 构造list非常简单,直接用 [ ] 把list的所有元素都括起来,就是一个list对象. Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据: 例如: >>> L = ['Michael', 100, True] list索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索

4. Python里面如何实现tuple和list的转换

# Python里面如何实现tuple和list的转换 li = [1,2,3,4] print(tuple(li)) li1 = (1,2,3,4) print(list(li1)) str = '123' print(list(str))