list初始化
假设要使用一个二维的list,当然目前numpy是最方便的,如果没法使用numpy的话,我们使用二维list代替,但是list需要事先指定长宽!
r, c = 3,4
arr1 = [[0] * c]*r
arr2 = [[0 for _ in range(c)] for _ in range(r)]
这两个数组print一下:
arr1: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
arr2: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
完全一样啊!
但是,修改数值后发现:
arr1[0][3] = 3
arr2[0][3] = 3
arr1是共享内存啊!
arr1: [[0, 0, 0, 3], [0, 0, 0, 3], [0, 0, 0, 3]]
arr2: [[0, 0, 0, 3], [0, 0, 0, 0], [0, 0, 0, 0]]
长记性了!,,一定要手动扩展list!
本文探讨了在Python中如何正确地初始化二维List,并通过实例对比了两种常见方式的区别及潜在问题,特别是指出了共享内存的问题。

1万+

被折叠的 条评论
为什么被折叠?



