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

>>> 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']]
>>>


为什么一个仍然没有改变?
对不起,菜鸟问题。

最佳答案

当你说

i=i[4:]


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

i[:]=i[4:]

关于python - list list 的浅拷贝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20826603/

10-10 16:55