【问题标题】:Python 2D array search neighbors cell elements on row and columnPython 2D 数组在行和列上搜索相邻单元格元素
【发布时间】:2021-10-17 19:30:59
【问题描述】:

我有一个依赖于用户输入的二维数组,每个元素只有 0 和 1。示例: matric=[[1,0,1],[1,0,0],[1,0,1] 代表病毒感染,如果用户在第[1,0,1]行输入就会感染[1 ,0,1]=>[1,1,1] 因为离 1 最近的单元格会感染。我想从用户输入中获取所有行和列,如果该值是 0,即值 1 旁边或之前的值。 这是我的一些感染细胞代码:

def isInfected(grid, r, c):
    return grid[r][c] == 1

功能检查获得下一次感染:

def getNextInfectedCells(grid):
    row = len(grid)
    column = len(grid[0])
    result = []

    for r in range(row):
        result.append([])
        for c in range(column:
            if(r==0 or r==row-1) or (c==0 or c==column-1):
                result.append(grid[r][c])
            elif grid[r][c]==0:
                result[r].append(0)
            else:
                result[r].append(grid[r][c])
        for line in result:
            print(line)

怎么了!它不起作用 最好的尊重!

【问题讨论】:

  • 你能分享你遇到的错误吗?
  • 您正在尝试在 result[r].append(0) 和 result[r] 中将一个 int 值 ( result[r] ) 附加到一个 int 值 ( grid[r][c] ) .append(grid[r][c]) 两个地方。
  • for c in range(column: 也是错误的,你忘了右括号。

标签: python arrays replace find 2d


【解决方案1】:

我不确定我是否理解问题,但这段代码应该可以工作。

user_input = [[1,0,1],[1,0,0],[1,0,1]]

for row in user_input:
    if 1 in row:
        infected = row.index(1) + 1
        row[infected] = 1

【讨论】:

  • 谢谢,它只能工作,但只有行,我希望它在行和列中,如果列的值为 1,它会像行一样感染列,它的顶部和下面的列将感染相同。
  • 并且上面的代码只在 1 之间工作,例如:[1,0,1] 但该过程是位于值 1 之前和旁边的行中的所有值将被感染,示例: [1,0,0]=>将得到 [1,1,0] 或 [0,0,1]=>[0,1,1] 列相同,如果有值 1 因此列顶部和下方值 1 会感染,例如:[[1,0,0],[0,0,0],[0,0,0]]=>[[1,1,0],[1,0,0] ,[0,0,0]]
猜你喜欢
  • 2016-07-24
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多