我收到了伪代码:
for i= 1 to 3
for j = 1 to 3
board [i] [j] = 0
next j
next i
我该如何在Python中创建这个数组?
(想法是使用for循环创建一个3x3的数组,其中所有元素都设置为0)。
我收到了伪代码:
for i= 1 to 3
for j = 1 to 3
board [i] [j] = 0
next j
next i
如果你真的想要使用 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]]
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]]
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]]
board = []
for i in range(3):
board.append([])
for j in range(3):
board[i].append(0)
你可以使用伪代码给出的样式,或者只需使用 Python 的一行代码。
chess_board = [[x]*3 for _ in range(y)] --> 列表推导式
或者你可以使用其他语言(如 Java)的普通循环样式。我更喜欢一行代码,因为它看起来更漂亮、更干净。
NumPy有相关的功能:
numpy.zeros((3,3))
nums = [[0]*4]*4
,并且它能够正常工作。这是正确的方法吗? - mehulmptnums[0][0] = 1
然后查看nums
的结果。 - arshajii