Python 在二维数组中递增值?

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 =

我正在尝试为我正在制作的游戏增加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 = 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]]