为什么字典里的临时变量值改变就可以 体现在整个列表里。直接改列表里临时变量的字符串不可以改变原列表呢?
无论是字典还是字符串,在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输出的内容是相同的,而后两个的输出是不同的,虽然字典项的值是一样的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。