1.numpy模式
import numpy as np
a=np.zeros((2,2))
print(a)
print(a[1][1])
2.但是一些考试,测试情景,无法使用numpy,那么怎么办呢?
比如我想要建立一个10*10的二维数组
resArr=[]
for i in range(10):
a= [1 for j in range(10)]
resArr.append(a)
print(resArr)
我们会得到这样一个数组
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
值得注意的是:
a[1]=10
print((resArr))
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 10, 1, 1, 1, 1, 1, 1, 1, 1]]
当我们改变a值,resArr也改变了。为什么呢?append相当于引用了这个对象,而非复制。
print(id(resArr[9])) #139865310403080
print(id(a)) #139865310403080
#是相同的id,其实append就相当于引用了a这个list对象。虽然我们很多时候不想他们耦合在一起