浅谈python中字典append 到list 后值的改变

这篇文章主要介绍了关于浅谈python中字典append 到list 后值的改变,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

看一个例子

d={'test':1}d_test=dd_test['test']=2print d

登录后复制

如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变了。

通常这和我们期待的不一样。

立即学习“Python免费学习笔记(深入)”;

Why?

因为字典d 是一个object ,而d_test=d并没有真正的将该字典在内存中再次创建。只是指向了相同的object。这也是python 提高性能,优化内存的考虑。

实际场景

d={"name":""}l=[]for i in xrange(5):  d["name"]=i  l.append(d)print l

登录后复制

loop 后可能跟你想要的结果并不相同。

即使append到list 中,但是,list中存放的也是一个对象,或者说是字典的地址。而非内存中真正的存储空间。

使用 .copy()方法。可以创建一个新的独立的字典

d={"name":""}l=[]for i in xrange(5):  test=d.copy()  test["name"]=i  l.append(test)print l

登录后复制

更新:

a={'q':1,'w':[]}b=a.copy()b['q']=2b['w'].append(123)print aprint b

登录后复制

这个时候发现a中’q’的值不会变化但是其列表中的值还是发生了改变

因为copy是浅层次copy

但是这里有个track

a={'q':1,'w':[]}b=a.copy()b['q']=2b['w']=[123]print aprint b

登录后复制

直接赋值的话,则不会改变a中的结构(多半是append这个方法的关系)

深层次的copy

import copya={'q':1,'w':[]}b=copy.deepcopy(a)

登录后复制

相关推荐:

Python 创建空的list,以及append用法讲解

以上就是浅谈python中字典append 到list 后值的改变的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2262727.html

(0)
上一篇 2025年2月27日 07:09:13
下一篇 2025年2月27日 07:09:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python 创建空的list,以及append用法讲解

    这篇文章主要介绍了关于python 创建空的list,以及append用法讲解,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Python中list的用法:如何创建list,如何表达list中的元素,如何修改和删除list …

    编程技术 2025年2月27日
    000
  • 对python中的pop函数和append函数详解

    这篇文章主要介绍了关于对python中的pop函数和append函数详解,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 pop()函数 1、描述 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的…

    2025年2月27日
    200
  • 对Python 2.7 pandas 中的read_excel详解

    这篇文章主要介绍了关于对python 2.7 pandas 中的read_excel详解,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 导入pandas模块: import pandas as pd登录后复制 使用impor…

    编程技术 2025年2月27日
    200
  • 浅谈Python中重载isinstance继承关系的问题

    这篇文章主要介绍了关于浅谈python中重载isinstance继承关系的问题,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 判断继承关系 通过内建方法 isinstance(object, classinfo) 可以判断一…

    编程技术 2025年2月27日
    200
  • 编程语言都有哪些种类

    编程语言有多种类型,按范式分类包括命令式、声明式、函数式和逻辑编程语言。按编译方式分类有编译型、解释型和半编译型语言。按用途分类有通用编程语言、特定领域语言和脚本语言。按平台分类有跨平台语言和特定平台语言。 编程语言的类型 编程语言是计算机…

    2025年2月27日
    200
  • 常见编程语言有哪些

    常见的编程语言有 Python、Java、C++、JavaScript、C#、Swift、R 和 Go。选择编程语言时,需要考虑项目类型、经验水平、平台、性能要求和可用性等因素。 常见的编程语言 编程语言是计算机科学家用来与计算机交流的语言…

    2025年2月27日
    200
  • 基于matplotlib Python实现正弦信号的时域波形和频谱图示例

    这篇文章主要介绍了python实现正弦信号的时域波形和频谱图,涉及python数学运算与图形绘制相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现正弦信号的时域波形和频谱图。分享给大家供大家参考,具体如下: # -*- co…

    2025年2月27日
    200
  • 计算机语言python

    Python 是一种高级、解释性、面向对象的编程语言,具有简洁的语法和丰富的库,适用于各种开发领域。其优点包括:快速开发、数据科学、机器学习、自动化和社区支持。 Python:一门现代的编程语言 什么是 Python? Python 是一种…

    2025年2月27日
    200
  • 常见的编程语言有哪些

    最常见的编程语言包括:Python:易学且用途广泛,常用于网络开发、数据科学和人工智能。Java:面向对象、平台无关,用于开发企业级应用程序、移动应用程序和桌面应用程序。C++:高级语言,提供对底层硬件访问,用于操作系统、嵌入式系统和游戏开…

    2025年2月27日
    200
  • 对python中的xlsxwriter库简单分析

    这篇文章主要介绍了关于对python中的xlsxwriter库简单分析,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 一、xlsxwriter 基本用法,创建 xlsx 文件并添加数据 xlsxwriter 可以操作 xls…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论