【问题标题】:can't modify copy of array without changing original array在不更改原始数组的情况下无法修改数组副本
【发布时间】:2022-11-12 08:48:39
【问题描述】:

我尝试修改数组“newTab”但没有使用tab.copy()但它总是修改原始数组。

tab = [[1]*2]*3
newTab = [None] * len(tab)
for i in range(0, len(tab)):
    newTab[i] = tab[i]

newTab[0][0] = 2
print(tab)
[[2, 1], [2, 1], [2, 1]]
print(newTab)
[[2, 1], [2, 1], [2, 1]]

我也尝试过使用这样的东西: a = b[:] 但它不起作用。 不知何故,原始数组始终是对新数组的引用。 我刚开始学习python,我们只能将基础知识用于家庭作业。所以我不允许使用 deepcopy() 之类的东西 任何帮助,将不胜感激!

【问题讨论】:

标签: python arrays


【解决方案1】:

您可以使用copy 库。

import copy

tab = [[1] * 2] * 3
newTab = [None] * len(tab)
for i in range(len(tab)):
    newTab[i] = copy.deepcopy(tab[i])
    newTab[i][0] = 2

print(tab)
print(newTab)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2021-06-09
    • 2021-12-02
    • 2019-10-26
    • 2014-03-18
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多