python for循环修改列表

Image

这两种写法的区别是什么啊?
为什么上面的方法不能修改列表元素呢

阅读 6.6k
2 个回答

因为在循环当中执行i = 'The great'时,i每次的内存地址都不是指向之前列表当中的元素了。

moshushi = ['a', 'b']
print id(moshushi[0])
print id(moshushi[1])

for i in moshushi:
    print "before: {}".format(id(i))
    i = 'The great'
    print "after: {}".format(id(i))

运行结果是

4547667648
4547667688
before: 4547667648
after: 4568310720
before: 4547667688
after: 4568310720

因为i只是一个临时变量, 并没有具体代表原列表的成员, 你改变了i, 只是改变了i的指向而已, 让i指向新值, 但是原序列完全没影响

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题