如何在Python中初始化2D数组?

时间:2014-06-03 19:12:19

标签: python arrays multidimensional-array pseudocode

我已经获得了伪代码:

    for i= 1 to 3
        for j = 1 to 3
            board [i] [j] = 0
        next j
    next i

我如何在python中创建它?

(我们的想法是创建一个3乘3的数组,并使用for循环将所有元素设置为0)。

5 个答案:

答案 0 :(得分:14)

如果你真的想使用for - 循环:

>>> board = []
>>> for i in range(3):
...     board.append([])
...     for j in range(3):
...         board[i].append(0)
... 
>>> board
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

但是Python让你更容易:

>>> board = [[0]*3 for _ in range(3)]
>>> board
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

答案 1 :(得分:2)

arr=[[0,0,0] for i in range(3)] # create a list with 3 sublists containing [0,0,0]
arr
Out[1]: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

如果您想要一个包含5个包含4 0的子列表的列表:

In [29]: arr=[[0,0,0,0] for i in range(5)]

In [30]: arr
Out[30]: 
[[0, 0, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0, 0]]

范围指定所需的子列表数量,范围从0开始,因此范围4为0,1,2,3,4。  给你五个[0,0,0,0]

使用列表推导与:

相同
arr=[]
for i in range(5):
    arr.append([0,0,0,0])

arr
[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]

答案 2 :(得分:0)

numpy有这样的东西:

numpy.zeros((3,3))

答案 3 :(得分:0)

如果你想要更接近你的伪代码的东西:

board = []
for i in range(3):
    board.append([])
    for j in range(3):
        board[i].append(0)

答案 4 :(得分:0)

您可以使用给定的伪代码样式,或者只使用python one liner

chess_board = [[x] * 3 for _ in range(y)] - >列表理解

或者您可以使用其他语言(如java)的普通循环样式。我更喜欢一个衬垫,因为它看起来更好更清洁。