在python中填充2D列表的边缘

时间:2013-02-23 13:13:34

标签: python

我一直在使用代码

BOARD = [[0 for i in range(GRIDWIDTH)] for j in range(GRIDWIDTH)]

为我的pygame项目的一部分创建一个二维'网格'。

我想知道如何用不同的数字填充网格的边缘,所以我在网格的中心有零,被边缘的那些包围。

谢谢!

2 个答案:

答案 0 :(得分:1)

BOARD = [[1] * GRIDWIDTH] + [
     [1] + [0]*(GRIDWIDTH-2) + [1] for j in range(GRIDWIDTH-2)
   ] + [[1] * GRIDWIDTH]

答案 1 :(得分:1)

我建议你在这里使用numpy

>>> import numpy as np
>>> grid = np.zeros(shape=(10,10))
>>> grid[[0,-1],:] , grid[:,[0,-1]] = 1, 1
>>> grid
array([[ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.]])
>>>