Kav*_*van 3 python python-2.7 python-3.x
我有matrix = [[1,2,3],[4,5,6],[7,8,9]]
和matrix2=matrix
。现在我想从matrix2 中删除第一行,即matrix2.remove(matrix[0])
。
但我得到了这个
>>> matrix2.remove(matrix2[0])
>>> matrix2
[[4, 5, 6], [7, 8, 9]]
>>> matrix
[[4, 5, 6], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)
第一行matrix
也被删除。谁能解释一下吗?以及如何在matrix2
不改变的情况下删除第一行matrix
尝试:
>>> matrix = [[1,2,3],[4,5,6],[7,8,9]]
>>>
>>> # make matrix2 a (shallow) copy of matrix
>>> matrix2 = matrix[:]
>>> matrix2.remove(matrix[0])
>>> print(matrix2)
[[4, 5, 6], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)
嗯……这是为什么呢?这是因为该语句matrix2 = matrix
不会“复制”值......它仅意味着name指向与 namematrix2
完全相同的值。 matrix
要实际创建列表的(浅)副本,我们可以将其切片为matrix2 = matrix[:]
. 这将创建一个指向包含该名称的所有值的新列表的名称 matrix2
matrix
归档时间: |
|
查看次数: |
8610 次 |
最近记录: |