资源经验分享python自学篇七[字典+深拷贝与浅拷贝]

python自学篇七[字典+深拷贝与浅拷贝]

2020-01-02 | |  80 |   0

原标题:python自学篇七[字典+深拷贝与浅拷贝]

原文来自:CSDN      原文链接:https://blog.csdn.net/Web_Student/article/details/103788308



什么是字典

  • 字典是另外一种可变容器类型,且可以存储任意类型对象。列表元素进行修改的话,通过索引进行修改,如果当前元素的顺序发生改变,此时还需要修改索引才能成功完成元素的修改。有没有办法,既能存储多个数据,又能很方便准确的定位元素呢?答:字典

  • 字典创建语法:字典的创建使用{},每个键值(key=>value)对用冒号(:)分割,每对之间用逗号(,)分割。

  • 字典名={key1:value1,key2:value2}

students={'name':'Tom','age':18,'sex':'男',18:19}

操作字典

  • 访问字典
    字典中根据键访问值,可以指定自点名和放在方括号内的键。以下字典想要获取学员姓名。

students={'name':'Tom','age':18,'sex':'男',18:19}
print(students['age'])
输出结果:age1
  • 修改字典元素

字典元素也是可以修改的,通过key找到具体元素之后,给一个新的元素值即可。以下字典将学员的年龄修改为20

students['age']=20#将age原理的18修改为2012
  • 添加元素
    动态的向字典中添加元素的时候,只要添加的键在字典中不存在,就会新增这个元素。在以下字典中添加一个住址信息

students['address']='上海'
  • 删除字典元素
    使用del语句删除元素:del既可以删除指定的字典元素(列表也可以指定),也可以删除整个字典,如果不指定key,代表删除整个字典,语法如下:

del 字典名[key]

使用clear()方法清空整个字典:被清空的字典最后会剩下一个空的字典在,而用del删除的字典在程序当中就不存在了,语法如下:

字典名.clear()

03.png04.png05.png06.png

深拷贝与浅拷贝

Python中string、tuple和number是不可变对象,而dict、list等是可变对象;不可变对象在进行重新赋值的时候,实际上是将原始值丢弃,将变量指向一个新值;可变对象的可变性实质上是指更改可变对象中的子对象,比如list中的item元素的更改。

  • 浅拷贝:不拷贝子对象(针对子对象中的item),当子对象进行更改的时候,原始对象也会改变。常见操作:列表的切片[:]操作、list()操作,字典的copy()函数、copy模块的copy()函数(两个一模一样的双胞胎)


深拷贝:会拷贝子对象,当对原始对象子对象进行更改的时候,原始对象不会改变。

常见操作:copy模块的deepcopy()函数

  • 思路一:利用切片操作和list方法拷贝等就叫浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。

  • 思路二:利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用。
    但是对于数字,字符串和元组类型对象,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值,也只是新创建一个对象,替换掉旧的而已。

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:python自学篇六[元组]

下一篇:python自学篇八[循环:while+for+pass+range()+推导式]

用户评价
全部评价

热门资源

  • Python 爬虫(二)...

    所谓爬虫就是模拟客户端发送网络请求,获取网络响...

  • TensorFlow从1到2...

    原文第四篇中,我们介绍了官方的入门案例MNIST,功...

  • TensorFlow从1到2...

    “回归”这个词,既是Regression算法的名称,也代表...

  • TensorFlow2.0(10...

    前面的博客中我们说过,在加载数据和预处理数据时...

  • 机器学习中的熵、...

    熵 (entropy) 这一词最初来源于热力学。1948年,克...