import numpy as np
a = np.arange(20)
print('a:', a)
L1 = []
L1.append(a)
print('L1:', L1)
a[-8:17:1] = 1
print('a:', a)
L1.append(a)
print('L1:', L1)
上面的输出是-
a: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
L1: [array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])]
a: [ 0 1 2 3 4 5 6 7 8 9 10 11 1 1 1 1 1 17 18 19]
L1: [array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 1, 1, 1, 1,
17, 18, 19]), array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 1, 1, 1, 1,
17, 18, 19])]
为什么L1的第一个元素发生变化?以及如何防止其更改?
答案 0 :(得分:0)
变量a
不是简单的数据类型(np.array),因此,在分配或根据情况将其附加到变量时,您将不会附加副本,而是对对象的引用。因此,对对象的任何更改都会在引用对象的任何地方得到反映。
使用a.copy()
应该可以解决您的问题:
L1.append(a.copy())