在 Python 中使用二维数组

如果你需要使用二维数组,在 Python 中,除了 numpy 这个包之外,最简单的方式就是使用 list 了。你可能认为可以这样构建:

n = 3
m = 4
array = [ [0] * m ] * n
# array
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

但是请你再仔细想一想,这样做真的没有问题吗?
不要忘记了,Python 一切都是对象这个问题,对象肯定存在引用的问题,尤其是可变对象。我们试着来改变其中一个元素:

array[1][0] = 1
# array
 [[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]

很不幸,不是我们想象的那样,它改变了多个元素。
来看一看 [ [0] * m ] * n 这个表达式,它首先创建 a = [ [0] * 4],然后构造 array = [a] * 3,这里 array 里面是 a 的 3 个引用。
正确的构造,应该使用列表推导式,而且非常 Pythonic

array = [ [0] * m for i in range(n) ]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容