我想创建一个最初设置为0的2d整数值数组。
这就是我的想法:
grid = [[0] * width] * height
但是这只是创建每一行作为原始的引用,所以做类似
的事情grid[0][1] = 1
将修改所有grid [n] [1]值。
这是我的解决方案:
grid = [[0 for x in range(width)] for y in range(height)]
感觉不对,是否有更好的更多pythonic方式来做到这一点?
编辑: 奖金问题,如果网格大小永远不会改变并且只包含整数,我应该使用类似元组或array.array的东西吗?
答案 0 :(得分:4)
Since numbers are immutable, using * to create a list should be fine。因此,2D列表初始化可以像这样完成
[[0] * width for y in range(height)]
答案 1 :(得分:1)
答案 2 :(得分:0)
这是我使用的。
def generate_board(n): #Randomly creates a list with n lists in it, and n random numbers
#in each mini list
list = []
for i in range(0, n):
list.append([])
for j in range(0, n):
list[i].append(random.randint(0, 9))
return list
def print_board(board):
n = len(board) - 1
while n > -1:
print str(board[n]) + ' = ' + str(n)
n -= 1