同学,你的python~
Posted 木木烽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同学,你的python~相关的知识,希望对你有一定的参考价值。
不知道昨天那个科普你有没有看懂,没看懂也没关系,毕竟现在只是在学基本语法。
今天我们要来讲一下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~的主要内容,如果未能解决你的问题,请参考以下文章