添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
谦虚好学的石榴  ·  PyQt/QTextEdit/Highlig ...·  1 周前    · 
完美的馒头  ·  python QTreeWidget ...·  1 周前    · 
高大的卤蛋  ·  Prevent Cross-Site ...·  1 周前    · 
坚韧的竹笋  ·  java.lang.NoClassDefFo ...·  2 月前    · 
好帅的野马  ·  安徽省科学技术厅 ...·  2 月前    · 
月球上的镜子  ·  WifiController·  6 月前    · 
腼腆的柳树  ·  U.S. Merit Systems ...·  1 年前    · 

摘要:最近在进行数据分析时,在python对象的深浅拷贝方面,遇到了一个很低级的错误。

  1. 遇到的问题

    浅拷贝和深拷贝1.jpg

    代码意思很简单,把result字典添加进result_list里面,想象中的结果应该是
    [{'城市':'城市63'},{'城市':'城市64'}],但是实际结果却是[{'城市':'城市64'},{'城市':'城市64'}]。

    原因: python中的对象就像c语言里一个指向一块内存地址的指针。可以用id(result)查看字典result的唯一标识,可以类比成result在内存中的地址。

    当使用append时并没有将字典result的值拷贝过去,而是拷贝的指向这块内存地址的指针。所以当后面在对result字典进行修改的时候,自然会影响到前面已经添加进result_list列表的值。

  2. update方法
    update方法是浅拷贝。

    浅拷贝和深拷贝2.jpg

    可以看到字典d会拷贝第一层变量的值,例如字典d中的值不会和字典f有关系。而字典g的值得变化会影响字典d的值。

  3. append方法

    浅拷贝和深拷贝3.jpg

    可以看到列表k的值受到q的影响。

  4. dict.fromkeys方法

    浅拷贝和深拷贝4.jpg

    可以看到dict.fromkeys方法返回的ret字典受到a列表的影响。

  5. 深拷贝和浅拷贝方法

    • 深拷贝

    浅拷贝和深拷贝5.jpg

    • 浅拷贝

    浅拷贝和深拷贝6.jpg

  6. python中=赋值语句

    • 赋值相当于重新创建了一个新的变量,可以看到id(a)函数返回值不一样

    浅拷贝和深拷贝7.jpg

标签: python

本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。

  • python爬虫
  • python
  • es6语法
  • typecho
  • windows配置
  • linux设置
  • xdebug
  • gns3教程
  • 缓冲区溢出
  • docker文件系统
  • gdb使用
  • redis
  • docker用法
  • php审计
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 1 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 10 月
  • 2023 年 9 月
  • 2023 年 7 月
  • 2023 年 6 月
  • 2023 年 5 月
  • 2023 年 3 月
  • 2023 年 1 月
  • 2022 年 12 月
  • 2022 年 10 月
  • 2022 年 9 月
  • 2022 年 7 月
  • 2021 年 10 月
  • 2021 年 9 月
  • 2021 年 8 月
  • 2021 年 7 月
  • 2021 年 5 月
  • 2021 年 4 月
  • 2021 年 3 月
  • 2021 年 2 月
  • 2021 年 1 月
  • 2020 年 12 月
  • 2020 年 11 月
  • 2020 年 10 月
  • 2020 年 9 月
  • 2020 年 8 月
  • 2020 年 7 月
  • 2020 年 6 月
  • 2020 年 5 月
  • 2020 年 4 月
  • 2020 年 3 月
  • 2020 年 2 月
  • 2020 年 1 月
  • 2019 年 12 月
  • 2019 年 11 月
  •