zoukankan      html  css  js  c++  java
  • 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之类的,都是不返回新副本的。所以改变原来的列表,并不是我们希望的。

  • 相关阅读:
    进程池线程池
    线程与其操作方法
    生产者消费者模型
    Java反射机制详解
    ajax跨域原理以及解决方案
    数据库连接池的选择 Druid
    新目标
    让webstorm支持avalon语法自动补全
    使用IDEA和gradle搭建Spring MVC和MyBatis开发环境
    使用IDEA自带的rest client参数传递乱码问题
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786661.html
Copyright © 2011-2022 走看看