【问题标题】:Python copy of array also changes normal array数组的 Python 副本也会更改普通数组
【发布时间】:2020-05-08 12:29:41
【问题描述】:

我复制了一个名为“arr”的二维数组,但是当我更改副本时,它也会更改原始数组。
代码:

def play(arr):

    for row in range(len(arr)):
        for column in range(len(arr[row])):
            if arr[row][column] == '':
                tempArr = arr.copy()
                tempArr[row][column] = 'a'

    print(arr)

play([['', ''], ['', '']])

输出:

[['a' 'a']
 ['a' 'a']]

预期输出:

[['' '']
 ['' '']]

但是如果在一维数组中,这不会发生:

def play(arr):

    for row in range(len(arr)):
            if arr[row] == '':
                tempArr = arr.copy()
                tempArr[row] = 'a'

    print(arr)
    print('Temp arr: ' + str(arr))

play(['', ''])

输出:

['' '']
tempArr: ['' 'a']

对此我能做些什么?

感谢您的帮助!

【问题讨论】:

标签: python arrays python-3.x


【解决方案1】:

Copy 方法不会递归地复制列表中的嵌套结构。为此,您需要进行深度复制。在你的代码中试试这个:

import copy
tempArr = copy.deepcopy(arr)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2014-03-18
    • 2022-10-14
    • 1970-01-01
    • 2021-04-01
    • 2020-10-04
    • 2011-09-30
    相关资源
    最近更新 更多