Python 中list赋值引用
来源:互联网 发布:数字矩阵切换器类型 编辑:程序博客网 时间:2024/06/14 06:09
开发过程中发现(其实是被坑了,import了一个list并赋值给当前的局部变量,由于我不需要首元素,然后就del()掉,结果影响了其它模块),python中list赋值并不是拷贝,而是指针或者引用,看了些文章,发现是引用,底层实现没有去看,应该是C的指针吧
>>> la = [1, 2]>>> lb = la>>> lc = []>>> lc = la>>> ld = la[:]>>> la, lb, lc, ld([1, 2], [1, 2], [1, 2], [1, 2])>>> lb[0] = 'b'>>> la, lb, lc, ld(['b', 2], ['b', 2], ['b', 2], [1, 2])>>> lc[0] = 'c'>>> la, lb, lc, ld(['c', 2], ['c', 2], ['c', 2], [1, 2])>>> id(la)4341415808>>> id(la), id(lb), id(lc), id(ld)(4341415808, 4341415808, 4341415808, 4341470128)>>> le = la[1:]>>> la, lb, lc, ld, le(['c', 2], ['c', 2], ['c', 2], [1, 2], [2])>>> le[0] = 'e'>>> la, lb, lc, ld, le(['c', 2], ['c', 2], ['c', 2], [1, 2], ['e'])>>> id(la), id(lb), id(lc), id(ld), id(le)(4341415808, 4341415808, 4341415808, 4341470128, 4341566064)可以看到lb[0] lc[0]都修改了la[0]的值
id[0] 没有发生变化, le[0]的修改只影响了自己的值
通过id()可以看到la lb lc的地址是一样的,ld le是新的不同的地址
这也可以看到如果想要变量是拷贝的可以用[:]来拷贝全部或部分元素
参考:
http://www.cnblogs.com/yuyan/archive/2012/04/21/2461673.html
http://www.douban.com/note/226827597/
0 0
- Python 中list赋值引用
- Python中变量引用与赋值
- 【Python】list数组赋值
- python list中引用其它对象
- Python中变量传递时的引用和赋值
- Python中对象的理解:引用和赋值
- Python中变量赋值传递时的引用和拷贝
- python list 共享引用
- Python List的赋值方法
- [JAVA] List,对象引用,复制list和赋值
- python 中的赋值、引用、拷贝、作用域
- python 赋值生成引用,而不是拷贝
- python list(列表)赋值与复制
- Python中的list赋值问题:同一性问题
- Python练习11----list赋值给变量
- Python:给List中元素赋值和for循环的写法
- java 中对象引用,以及对象赋值
- java中对象的引用与赋值
- libharu(1):windows下编译方法
- zabbix-2.0.0 server & agent安装
- android开发中如何结束所有的activity
- 网页顶部空白 head解析到body中
- Testin实验室发布中国安卓游戏指数(8月报):欢乐斗地主夺冠
- Python 中list赋值引用
- 深入Java单例模式
- 算法————笔试内容--->红黑树(一)
- 银联支付安卓版服务评测
- ubuntu 14.10 安装uboot-mkimage
- SQL SERVER实现基本的分页功能
- HashMap
- FFmpeg的Android平台移植—编译篇
- 指针(一)