您的位置:首页 > 其它

建立引用的道路上充满了陷阱

2013-10-23 12:14 267 查看
>>> def dupu(t):
return t

>>> t=[1,2,3]
>>> s=dupu(t)
>>> s
[1, 2, 3]
>>> t.append(4)
>>> s
[1, 2, 3, 4]


本来只想改变t列表,结果s列表也发生相同变化了.根本原因在于变量s和t都是指向同一个list对象.

如何避免这种情况,让s和t相互独立?那就要让dupu返回一个新的list对象.

>>> def dupu(t):
return [i for i in t]

>>> t=[1,2,3]
>>> s=dupu(t)
>>> s
[1, 2, 3]
>>> t.append(4)
>>> s
[1, 2, 3]
>>>


或者使用copy.deepcopy函数:

>>> import copy
>>> def dupu(t):
return copy.deepcopy(t)

>>> t=[1,2,3]
>>> s=dupu(t)
>>> s
[1, 2, 3]
>>> t.append(4)
>>> s
[1, 2, 3]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: