如果我在Python 2.7中运行以下代码,我会为a和b打印[2.,2.,2.].为什么b与a一起变化?非常感谢!
def test_f(x):
a = np.zeros(3)
b = a
for i in range(3):
a[i] += x
print a
print b
return 0
test_f(2)
Run Code Online (Sandbox Code Playgroud)
因为b并且a指的是内存中的相同列表.b = a没有创建新的副本a.试试这个,看看差异:
def test_f(x):
a = np.zeros(3)
b = a.copy()
for i in range(3):
a[i] += x
print a
print b
return 0
test_f(2)
Run Code Online (Sandbox Code Playgroud)
b = a.copy()将创建一个完全类似于元素的新副本a,而b=a只是创建一个对现有列表的新引用.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |