如果你需要使用二维数组,在 Python 中,除了 numpy 这个包之外,最简单的方式就是使用 list 了。你可能认为可以这样构建:
但是请你再仔细想一想,这样做真的没有问题吗?
不要忘记了, Python 一切都是对象 这个问题,对象肯定存在引用的问题,尤其是可变对象。我们试着来改变其中一个元素:
很不幸,不是我们想象的那样,它改变了多个元素。
来看一看 [ [0] * m ] * n 这个表达式,它首先创建 a = [ [0] * 4] ,然后构造 array = [a] * 3 ,这里 array 里面是 a 的 3 个引用。
正确的构造,应该使用 列表推导式 ,而且非常 Pythonic :
也能输入吧,用eval处理一下。
# -*- coding: utf8 -*-arrayString = input('输入一个二维数组:')
array = eval(arrayString)
print(array)
输入一个二维数组:[[1,2],[3,4]]
[[1, 2], [3, 4]]