zoukankan      html  css  js  c++  java
  • 考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?

    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’] = i
    5 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 中的值也会跟着改变,相当于浅拷贝。

  • 相关阅读:
    VUE 入门基础(2)
    VUE 入门基础(1)
    常用正则表达式
    git 常用命令
    JavaScript 常用算法
    SVG 使用
    移动前端头部标签(HTML5 meta)
    开发常用小demo 整理
    Reactjs 入门基础(三)
    Reactjs 入门基础(二)
  • 原文地址:https://www.cnblogs.com/lmh001/p/9558071.html
Copyright © 2011-2022 走看看