Python 在二维数组中递增值?
我正在尝试为我正在制作的游戏增加2d数组中的值,但是我在每个数组中得到的值是相同的。代码如下:Python 在二维数组中递增值?,python,arrays,list,Python,Arrays,List,我正在尝试为我正在制作的游戏增加2d数组中的值,但是我在每个数组中得到的值是相同的。代码如下: def matrix(grid): nrows = len(grid) ncols = len(grid[0]) for i in range(nrows): for j in range(ncols): grid[i][j] += 10 for row in grid: print(row) rows =
def matrix(grid):
nrows = len(grid)
ncols = len(grid[0])
for i in range(nrows):
for j in range(ncols):
grid[i][j] += 10
for row in grid:
print(row)
rows = 4
cols = 4
grid = [[0 for i in range(cols)] for i in range(rows)]
matrix(grid)
输出为:
[10, 10, 10, 10]
[10, 10, 10, 10]
[10, 10, 10, 10]
[10, 10, 10, 10]
我希望它在哪里
[10, 20, 30, 40]
[10, 20, 30, 40]
[10, 20, 30, 40]
[10, 20, 30, 40]
另外,是否可以交错并使用两个嵌套的for循环为每行提供递增的值?例如:
[10, 20, 30, 40]
[20, 40, 60, 80]
[10, 20, 30, 40]
[20, 40, 60, 80]
输出如预期的那样:下面的代码行向每个单元格添加10,因为每个单元格在输入时都是零,所以在输出时变为10
for i in range(nrows):
for j in range(ncols):
grid[i][j] += 10
根据你想做的事情,也许下面的方法可以做到
for i in range(nrows):
for j in range(ncols):
grid[i][j] += 10*(j+1)
对于双循环版本,不是你给出的输出,但我没有找到模式
for i in range(nrows):
for j in range(ncols):
grid[i][j] += 10*(i+j+1)
您需要将代码更改为:
for i in range(nrows):
val = 10
for j in range(ncols):
grid[i][j] = val
val += 10
您可以尝试以下循环:
for i in range(nrows):
for j in range(ncols):
if (i % 2 != 0):
grid[i][j] += 20*(j+1)
else:
grid[i][j] += 10*(j+1)
对于输出:
[10, 20, 30, 40]
[20, 40, 60, 80]
[10, 20, 30, 40]
[20, 40, 60, 80]
每当你必须修改整个列表时,尽量做到理解。它是高效的。这样,你的问题就可以解决了
rows = 4
cols = 4
grid = [[0] * cols for _ in range(rows)]
print [[(i * 10) for i in xrange(1, len(row) + 1)] for row in grid]
输出
欢迎来到SO,回答得好!或者简单地说网格[i][j]=10*j+1有趣,这正是我想要的。
rows = 4
cols = 4
grid = [[0] * cols for _ in range(rows)]
print [[(i * 10) for i in xrange(1, len(row) + 1)] for row in grid]
[[10, 20, 30, 40], [10, 20, 30, 40], [10, 20, 30, 40], [10, 20, 30, 40]]