+ -
当前位置:首页 → 问答吧 → list 和tuple转换的问题

list 和tuple转换的问题

时间:2011-02-27

来源:互联网

在python核心编程里说:
list()函数和tuple()函数接受可迭代对象(比如另一个序列)作为参数,并通过浅拷贝数据
来创建一个新的列表或者元组。
,无论list()还是tuple()都不可能做完全的转换(见
6.1.2 节).也就是说,你传给tuple()的一个列表对象不可能变成一个元组,而你传给list()的
对象也不可能真正的变成一个列表.虽然前后两个对象(原来的和新的对象)有着相同的数据集
合(所以相等 == ),但是变量指向的却不是同一个对象了


不明白为啥 浅拷贝 id还不一样了!
Python code
>>> l=['a','b']
>>> t = tuple(l)
>>> t
('a', 'b')
>>> id(l)
14415712
>>> id(t)
14435752
>>> 

作者: z752964360   发布时间: 2011-02-27

你创建新的序列对象当然id不同了,浅拷贝指的序列对象的元素,不是序列对象本身。
id(l[0]), id(t[0])

作者: I_NBFA   发布时间: 2011-02-27

所谓深拷贝浅拷贝的区别是对象的子对象(或者叫子域,字段,成员)是否被递归clone。对象本身,都是一个新的copy,id当然不同。

作者: iambic   发布时间: 2011-02-27

引用 2 楼 iambic 的回复:

所谓深拷贝浅拷贝的区别是对象的子对象(或者叫子域,字段,成员)是否被递归clone。对象本身,都是一个新的copy,id当然不同。

有深度

作者: bestdowt1314   发布时间: 2011-02-27