建立引用的道路上充满了陷阱
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]
相关文章推荐
- 一个完整的创建用户,创建表空间,授权建表过程
- 去除eclipse的validating
- Ubuntu下通过sftp远程登录linux系统,并实现上传、下载文件
- storage服务功能实现分析之一
- cp命令
- java 反射技术 打印类成员变量的值(查看一个对象的成员数据时十分方便)
- [LeetCode] Binary Tree Zigzag level order traversal
- silverlight MediaElement帧精确视频播放手记
- C++面试题(二)——自己实现一个String类
- spring security 入门图解(概述)
- 对corte m3中断优先级设置的理解
- 下拉列表无限级联
- cocos2dx教程
- 读取xml文件信息
- 观察者模式
- wamp5 忘记mysql root密码 重置方法
- 4.C语言之数组
- mysql 查询表结构信息的方法
- WebView退出时停止视频播放
- wamp5 忘记mysql root密码 重置方法