您的位置:首页 > 编程语言 > Python开发

python 引用和拷贝、重复

2017-04-07 11:01 267 查看


Python 引用:

python一般内部赋值变量的话,都是传个引用变量,和C语言的传地址的概念差不多,

比如

a = [1,2,3]

表示变量a保存了这个列表的地址

python里可以用id()来查询下

a在内存的地址是:675375852

b = a 

那b的内容是什么,地址又是什么呢?

用print 输出下b的内容也是[1,2,3]

然后我们查看下b的地址看下能否验证我们的结论

print id(b)

果然b的地址也是:675375852

呵呵看来结论也正确的。

这样会带来一个问题,因为变量a,和变量b都是保存了同一个列表的地址。如果我改变a指向的列表的值的话,

那b指向的列表的值也同时改变

比如:

a[1] = 6

print a

输出的内容是[1,6,3]

print b

b指向的列表的内容也是[1,6,3]



python 拷贝


如果我们只想修改a列表里面的内容。而不想修改b的内容,那就要用到python的拷贝了

a=[1,2,3]

b=a[:]###拷贝了一份a的内容给b

a[1]=6

print a

输出a的内容是[1,6,3]

而b的内容不是[1,6,3]

而是[1,2,3]

>>> a=[1,2,3]

>>> print id(a)

10767176

>>> b=a

>>> print id(b)

10767176

>>> a[1]=6

>>> print a

[1, 6, 3]

>>> print b

[1, 6, 3]

>>> a=[1,2,3]

>>> b=a[:]

>>> print a

[1, 2, 3]

>>> print b

[1, 2, 3]

>>> a[1]=6

>>> print a

[1, 6, 3]

>>> print b

[1, 2, 3]

>>> print id(a)

15181944

>>> print id(b)

15182880

>>> 

二:

重复能增加层次的深度

L=[4,5,6]
X=L*2//简单重复非引用
Y=[L]*2 //列表的引用

//X=[4,5,6,4,5,6]
//Y=[[4,5,6],[4,5,6]]

L[1]=0

//X=[4,5,6,4,5,6] 没有改变
//Y=[[4,0,5],[4,0,5]] 因为是列表的引用所以改变了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息