天行健,君子以自强不息;地势坤,君子以厚德载物;

Python中列表的赋值

最近使用python开发系统,发现列表赋值中一个需要注意的问题,现象如下:

[python]
c = [1,8,9,3,4]  
d = c  
print c[0]  
print d[0]  
print '========================='  
d[0] = 100  
print c[0]  
print d[0]  

输出结果:

1
1
=========================
100
100

这样的简单赋值,其实是将c和d指向同一个列表,类似数组指针赋值。

如何复制出一份独立的列表呢?python中可以用分片的方式,复制出一份新的列表的副本,而不是指向同一个列表。

[python] view plaincopy
e = [1,8,9,3,4]  
f = e[:]  
print e[0]  
print f[0]  
print '========================='  
f[0] = 100  
print e[0]  
print f[0] 

输出结果:

1
1
=========================
1
100

可以看出,列表e和f完全是两个列表。 列表中有很多操作,比如sort之类的,都是不返回新副本的。所以改变原来的列表,并不是我们希望的。

点赞

发表回复