码迷,mamicode.com
首页 > 编程语言 > 详细

同学,你的python~

时间:2018-05-23 22:42:27      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:idt   复制   关系   作者   most   image   ima   python   png   

不知道昨天那个科普你有没有看懂,没看懂也没关系,毕竟现在只是在学基本语法。

技术分享图片

 

今天我们要来讲一下copy,fromkeys,get这三个方法。

我们先来看一下copy这个方法,copy这个方法有点特殊,我们在前面讲过的复制的方法,只要修改复制后的值,被复制的值也会发生相应的改变,但是,在copy这个方法这里,如果是实行替换的话,那么被复制的值是不会被改变的,但如果实行的是删除,被复制的值会被改变。我们来看一下对比代码:

x = {name:Tom,phone:[123,456]}
y = x.deepcopy()
y[name] = pony
y[phone].remove(123)
y
#按回车,得到的结果是:{‘name‘: ‘pony‘, ‘phone‘: [‘456‘]}
x
#按回车,得到的结果是:{‘name‘: ‘Tom‘, ‘phone‘: [‘456‘]}

我们看到上面的代码,很明显,y是x的副本,当我们替换y中的值的时候,也就是把Tom改成pony,只有y中的Tom会发生改变,而x中的Tom并不会被改变。接着我们看一下remove操作,remove之后,x,y两个字典的内容都被改变。那么,我们有没有什么别的方法来防止在修改副本的时候,被复制值被修改?这个时候我们就需要引入deepcopy这个方法,deepcopy的使用方法和copy一样,不过要在开头加入from copy import deepcopy,deepcopy不修改被复制值。

接下来我们来看一下fromkeys。这个方法主要是用来创建一个字典用的,没什么特变的地方,我们来看一下代码就好了:

{}.fromkeys([name,age])
#按回车,得到的结果是:{‘name‘: None, ‘age‘: None}

是不是一看到代码就基本知道怎么用了?fromkeys括号里面跟着的就是字典的键,用fromkeys创建的字典是没有值的。

最后,我们来看一下get这个方法,这个方法的主要作用在于当你查询字典中没有的某个项时,字典不会报错,会输出一个None跟你说没有这个项,我们来看一下示例代码:

x = {}
print(x[name])
#按回车,得到的结果是:Traceback (most recent call last):
#  File "<stdin>", line 1, in <module>
#KeyError: ‘name‘
print(x.get(name,no))
#按回车,得到的结果是no

看上面第一段代码,那个就是报错的提示,然后你看一下第二段代码中,得到的结果是no。这是我们在get方法里面有定义说如果找不到那么这个项的时候,就输出no。如果你没有定义的话,系统默认是输出None。

好的,今天的内容就讲到这里啦~

技术分享图片

 

(文章图片若有侵权,请联系作者删除)

 

同学,你的python~

标签:idt   复制   关系   作者   most   image   ima   python   png   

原文地址:https://www.cnblogs.com/Galaxyfengfeng/p/9075222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!