非常简单的python,我只是通过复制旧列表来创建一个新的列表对象.通过使用.copy()方法,我认为应该创建一个基于官方文档Python中的新对象:https://docs.python.org/3.6/library/stdtypes.html?highlight=list#list
后为什么我更新了新对象中的元素,旧列表对象中的元素也发生了变化.
old = [[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]]
print(old)
new = old.copy()
for i in range(len(new)):
for j in range(len(new[0])):
new[i][j] = 0
print(old)
print(new)
Run Code Online (Sandbox Code Playgroud)
为什么输出是,我期望旧值不应该改变:
[[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
复制仅适用于一维列表.无论使用多少维度,都可以使用deepcopy以下更好的解决方案:
from copy import deepcopy
old = [[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]]
print(old)
new = deepcopy(old)
for i in range(len(new)):
for j in range(len(new[0])):
new[i][j] = 0
print(old)
print(new)
Run Code Online (Sandbox Code Playgroud)
你将拥有:
[[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
[[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |