初学python,自己网上看了点语法篇,今天上算法课练习了螺旋矩阵,课后想用python的方法实现一边,开头就卡住了,既然是矩阵就要用到二维数组,c++和Java的定义方法可以直接一个int matrix[100][100]实现矩阵的定义。
但python是不能直接int 定义类型的,然后试了一下直接matrix[100][100],结果报错,“name 'matrix' is not defined”。学艺不精,网上查了一下别人的用法,在此做下总结。
首先,因为python的简洁性,一维数组是可以通过乘法来复制的,如:
>>>array = [0, 0]
>>>matrix = [array*2]
>>>matrix
[0, 0, 0, 0]
>>>matrix = [array]*2
>>>matrix
[[0, 0],[0, 0]]
根据学习c语言及Java语言的经验,这已经是一个二维数组了。但是,当我给其中一个变量赋值的时候发现了一个新的问题。
>>>matrix[0][0] = 1
>>>matrix
[[1, 0][1, 0]]
这里将matrix[0][0]赋值的时候,同时给了matrix[1][0]赋值。个人理解为,这个二维数组是引用了array,所以当给matrix[0][0]赋值的时候相当于是给array的[0]号位赋值了,同时又引用到了matrix[1][0]。
所以如何给python定义二维数组。
方法一:
>>>matrix = [[0, 0],[0, 0],[0, 0]]
或者
>>>array = [0]
>>>matrix = [array*2,array*2](这里只拷贝了array的值)
方法二:
通过嵌套循环来创建新的数组
>>>matrix = [[[]for i in range(2)]for i in range(2)]