根据这个官方文档:
list[:]
通过浅拷贝创建一个新列表。我进行了以下实验:
>>> squares = [1, 4, 9, 16, 25]
>>> new_squares = square[:]
>>> squares is new_squares
False
>>> squares[0] is new_squares[0]
True
>>> id(squares)
4468706952
>>> id(new_squares)
4468425032
>>> id(squares[0])
4466081856
>>> id(new_squares[0])
4466081856
这里的一切看起来都不错!new_square 和 square 是不同的对象(这里列出),但由于浅拷贝,它们共享相同的内容。但是,以下结果让我感到困惑:
>>> new_squares[0] = 0
>>> new_squares
[0, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
我更新了 new_square[0] 但 square 不受影响。我检查了他们的身份证:
>>> id(new_squares[0])
4466081824
>>> id(squares[0])
4466081856
您会发现 squares[0] 的 id 没有变化,但 new_squares[0] 的 id 发生了变化。这和我之前理解的浅拷贝有很大的不同。
谁能解释一下?谢谢!
呼如林
qq_笑_17
一只斗牛犬
随时随地看视频慕课网APP
相关分类