本帖最后由 Python初学者8号 于 2021-7-24 20:03 编辑
不是说tupel不可变吗 我有点不懂这里两个例子
>>> list1=['A', 'B']
>>> t = ('a','b',list1)
>>> t
('a', 'b', ['A', 'B'])
>>> del list1
>>> t
('a', 'b', ['A', 'B'])
>>> list1
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
list1
NameError: name 'list1' is not defined
有人说的是他的指向是不变的,那么我现在t2的和list1是同一个一个指向,list1从['A', 'B']改了到['x','y']之后而t2还是指向['A', 'B']这个我可以理解,可是如果是直接修改t[2][0]怎么就可以呢?我的下属不可以变,但是我的下属的下属可以变?
>>> list1=['A', 'B']
>>> t = ('a','b',list1)
>>> t
('a', 'b', ['A', 'B'])
>>> list1 = ['x','y']
>>> t
('a', 'b', ['A', 'B'])
>>> t[2][0]='你'
>>> t
('a', 'b', ['你', 'B'])
>>>
我蒙了
元组不可变是指的内存地址
元组中放一个列表,这个列表作为一个整体成为元组中的一个元素
python中列表是可变的,但是改变列表不会改变列表的指向,也就是ID
在元组中,只要各个元素的ID没有变化,在元组的层面,他没有发生改变
打个比方
你是一个搬家公司,负责搬运桌子,椅子和衣橱
业主往衣橱里放帽子还是裤衩对于你来说都没有改变
|