列表清单的浅拷贝

时间:2013-12-29 15:15:49

标签: python python-2.7

我知道[:]做的是浅拷贝(成员不被复制),仍然可以有人解释这种行为:

>>> a=[['a','b','c','a','b','c','a','b','c'],
...                        ['c','a','b','c','a','b','c','a','b'],
...                        ['b','c','a','b','c','a','b','c','a']
...                        ]
>>> for i in a:
...     i=i[4:]
... 
>>> a
[['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'], ['c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b'], ['b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a']]
>>> 

为什么a仍未改变? 抱歉没有问题。

1 个答案:

答案 0 :(得分:4)

当你说

i=i[4:]

您实际上并未将i更改为i[4:],而只是将i指向i[4:]i仅仅是对实际列表的引用。为了真正改变数据,

i[:]=i[4:]