开发者社区> 问答> 正文

为什么字典里的临时变量值改变就可以 体现在整个列表里。直接改列表里临时变量的字符串不可以改变原列表呢

为什么字典里的临时变量值改变就可以 体现在整个列表里。直接改列表里临时变量的字符串不可以改变原列表呢?

展开
收起
游客ahv54x37wvm7u 2021-10-31 11:36:27 582 0
1 条回答
写回答
取消 提交回答
  • 无论是字典还是字符串,在python中都是一个对象。

    对一个对象,如果对它赋值,就会重新建立它,相应的,这个对象就不再是原来那个对象了。

    因此

    for e in mylist:

    e=。。。
    

    这样做,为e赋值后,e就不再是指向列表mylis中的某一项了。

    而调用对象的方法或属性,则不会重新建立它。

    修改字典内的某一项,对于字典来说,只是调用其内部的方法而已,所以

    for e in mylist:

    e.['xxx'] = ...
    

    e一直都是对mylist中某一项的引用。

    可以参考下列代码:

    a = {'name': 'red'}

    print(a, a.repr)

    a['name'] = 'blue' # a没有改变,只是a的项值改变了

    print(a, a.repr)

    a = {'name': 'blue'} # 这已经是一个全新的字典了,虽然其项值与之前相同。

    print(a, a.repr)

    可以看到,虽然字典项的值改变了,但前两个print输出的内容是相同的,而后两个的输出是不同的,虽然字典项的值是一样的。

    2021-10-31 11:37:05
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
用计算和数据去改变整个世界 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载