python - 按值而不是引用复制列表列表

标签 python python-2.7 variables reference deep-copy

<分区>

为了理解为什么我在程序中遇到错误,在该程序中我试图找到行列式的“次要”,我编写了一个更简单的程序,因为我的变量被弄乱了。下面的这个函数将一个 2 * 2 矩阵作为输入,并返回一个包含其行的列表(我知道这毫无意义且效率低下,但我试图理解这背后的理论)。

def alpha(A):   #where A will be a 2 * 2 matrix
    B = A       #the only purpose of B is to store the initial value of A, to retrieve it later
    mylist = []
    for i in range(2):
        for j in range(2):
            del A[i][j]
        array.append(A)
        A = B
    return mylist

但是,这里似乎 B 被分配了 A 的值动态,从某种意义上说,我无法将 A 的初始值存储在 B 中以供以后使用。这是为什么?

最佳答案

因为python通过引用传递列表

这意味着当你写“b=a”时,你是在说 a 和 b 是同一个对象,当你改变 b 时,你也会改变 a,反之亦然

一种按值复制列表的方法:

new_list = old_list[:]

如果列表包含对象并且您也想复制它们,请使用通用的 copy.deepcopy():

import copy
new_list = copy.deepcopy(old_list)

关于python - 按值而不是引用复制列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382487/

相关文章:

python - librosa 生成 "undetailed"MFCC 频谱图

python - 在数据框中查找字符串并将新值存储在新列中

python - 光标.执行值子字符串不起作用

python - 将整数数组转换为字符串的最佳方法是什么?

java - 错误: variable might not have been initialized & if statement

python - Azure Speech SDK 使用 python 从流中将语音转换为文本

python - 为什么 Python "".split() 和 "".split (",") 会产生不同的结果?

python-2.7 - python中的模糊匹配日语字符串?

javascript - 通过ajax在多个页面上传递变量

javascript - 访问名称部分为变量的数组