11月22日 总结

93 阅读1分钟

每日总结(以后每日更新一则总结来记录新知识点和要避开的雷坑😃)

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)

输出如下

image.png 这篇文章有很形象的内存和指向的图例: www.geeksforgeeks.org/python-usin…