每日总结(以后每日更新一则总结来记录新知识点和要避开的雷坑😃)
1. Python 创建并初始化定长二维数组,两种方法。第一种要避雷!
def createFixedArray1(m,n):
return [[0]*n]*m
def createFixedArray2(m,n):
return [[0]*n for i in range(m)]
if __name__ == '__main__':
a1 = createFixedArray1(2,3)
print("a1: ", a1)
a1[0][1] = 1 # 同时改变每一行的第二列
print("a1 after: ", a1)
a2 = createFixedArray2(2,3)
print("a2: ", a2)
a2[0][1] = 1 #只改变(0,1)
print("a2 after: ", a2)
再来看三维数组。举例来说(2,3,4)
# m,n,p = (2,3,4)
tri = [[[0]*4] * 3] * 2
print("tri origin: ", tri)
tri[0][0][0] = 1
print("after: ", tri)
tri2 = [[[0]*4 for i in range(3)] for j in range(2)]
print("tri2 origin: ", tri2)
tri2[0][0][0] = 1
print("after: ", tri2)
输出如下
这篇文章有很形象的内存和指向的图例: www.geeksforgeeks.org/python-usin…