python中列表的赋值

最近刚刚学习python语言,发现python中列表的赋值很像C++中数组的赋值方式,不过各方面都比C++方便很多啊。

 

[python] view plaincopy
  1. c = [1,8,9,3,4]  
  2. d = c  
  3. print c[0]  
  4. print d[0]  
  5. print '========================='  
  6. d[0] = 100  
  7. print c[0]  
  8. print d[0]  

输出结果:

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

 

这样的简单赋值 其实是将C和D指向同一个列表。很像C/C++真的数组指针赋值哈。

  1. int a[] = {1,3,7,8,6,4};  
  2. int b[6] = a;  
  3. cout << a[0] << endl;  
  4. cout << b[0] << endl;  
  5. cout << "======================================"<< endl;  
  6. b[0] = 100;  
  7. cout << a[0] << endl;  
  8. cout << b[0] << endl;  

输出结果:

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

 

也许python列表赋值和C语言中的指针一样,指向同一个内存地址吧。

 

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

 

[python] view plaincopy
  1. e = [1,8,9,3,4]  
  2. f = e[:]  
  3. print e[0]  
  4. print f[0]  
  5. print '========================='  
  6. f[0] = 100  
  7. print e[0]  
  8. print f[0]  

输出结果:

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

 

可以看出,列表e和f完全是两个列表。

 

列表中有很多操作,比如sort之类的,都是不返回新副本的。所以改变原来的列表,并不是我们希望的。

posted @ 2013-06-28 12:30  小尼人00  阅读(1198)  评论(0编辑  收藏  举报