在函数“更改(参数)”中,是否“参数[:]”已经创建了本地副本?它适用于列表,为什么它不适用于数组?Python:函数中数组/列表的本地副本
import numpy
def change(par):
copy = par[:]
copy[0] = 123
def main():
L = [0, 0, 0]
print '\nL before: ' + str(L)
change(L)
print 'L after: ' + str(L)
A = numpy.zeros((1, 3))
print '\nA before: ' + str(A)
change(A[0])
print 'A after: ' + str(A)
if __name__ == '__main__':
main()
输出:
L before: [0, 0, 0]
L after: [0, 0, 0]
A before: [[ 0. 0. 0.]]
A after: [[ 123. 0. 0.]]
UPDATE
感谢您指出 “相提并论[:]” 是一个浅拷贝,它不适合阵列工作。
那么“浅拷贝”如何在数组结构的情况下工作?在列表的情况下,“浅拷贝”复制值,但当它变成数组时,“浅拷贝”只是复制引用而不是值?
“[:]”如何区分何时复制值以及何时复制参考?
你正在做一个浅拷贝 –