在函數「更改(參數)」中,是否「參數[:]」已經創建了本地副本?它適用於列表,爲什麼它不適用於數組?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
感謝您指出 「相提並論[:]」 是一個淺拷貝,它不適合陣列工作。
那麼「淺拷貝」如何在數組結構的情況下工作?在列表的情況下,「淺拷貝」複製值,但當它變成數組時,「淺拷貝」只是複製引用而不是值?
「[:]」如何區分何時複製值以及何時複製參考?
你正在做一個淺拷貝 –