考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?,python命令行,1 1. l = [
考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?,python命令行,1 1. l = [
1 1. l = []2 2. for i in xrange(10):3 3. l.append({‘num’:i})4 4. print l
1 1. l = []2 2. a = {‘num’:0}3 3. for i in xrange(10):4 4. a[‘num’] = i5 5. l.append(a)6 6. print l
以上两段代码的运行结果是否相同,如果不相同,原因是什么?
上方代码的结果:
1 1. [{‘num’:0},{‘num’:1},{‘num’:2},{‘num’:3},{‘num’:4},{‘num’:5},{‘num’:6},{‘num’:7},{‘num’:8},2 {‘num’:9}]
下方代码结果:
1 1. [{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},2 {‘num’:9}]
那么原因来了:
原因是:字典是可变对象,在下方的 l.append(a)的操作中是把字典 a 的引用传到列表 l 中,当后
续操作修改 a[‘num’]的值的时候,l 中的值也会跟着改变,相当于浅拷贝。
考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?
相关内容
- python入门-WHILE循环,python入门-while,1 使用while循
- Windows10下配置Python2和Python3共存 并用anaconda实现方便的
- python 列表中的Update()函数,pythonupdate,简介Python 字
- python常用模块-------转自林海峰老师,python林海峰,一
- python之使用request模块发送post和get请求,pythonrequest,im
- 在python中一对单引号,一对双引号,三个单双引号的区别
- 史上最全python面试题详解 (二)(附带详细答案(关注
- Python第一天接触心得,python第一天心得,最近想学Pytho
- Python_基础_(面向对象三大特性),python三大,一,继承#
- 如何离线安装python的whl库,离线pythonwhl,对于使用公司内
评论关闭