在 Python 中使用二维数组
在Python中,可以使用列表嵌套的方式来实现二维数组。例如,以下是一个3x3的二维数组的示例代码:
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(arr[0][0])
# 输出1
print(arr[1][2])
# 输出6
在上面的代码中,我们首先创建一个列表arr,其中包含3个子列表。每个子列表都包含3个元素,因此我们可以将arr视为一个3x3的二维数组。要访问二维数组中的元素,我们可以使用两个索引,第一个索引用于选择子列表,第二个索引用于选择子列表中的元素。例如,arr[0][0]表示选择第一个子列表的第一个元素,即1。arr[1][2]表示选择第二个子列表的第三个元素,即6。
如果你需要使用二维数组,在 Python 中,除了 numpy 这个包之外,最简单的方式就是使用 list 了。你可能认为可以这样构建:
但是请你再仔细想一想,这样做真的没有问题吗?
不要忘记了, Python 一切都是对象 这个问题,对象肯定存在引用的问题,尤其是可变对象。我们试着来改变其中一个元素:
很不幸,不是我们想象的那样,它改变了多个元素。
来看一看 [ [0] * m ] * n 这个表达式,它首先创建 a = [ [0] * 4] ,然后构造 array = [a] * 3 ,这里 array 里面是 a 的 3 个引用。
正确的构造,应该使用 列表推导式 ,而且非常 Pythonic :