[英]scan list of lists in python finding specific characters on elements
我在寻找访问 python 中特定列表的方法时遇到了问题。
这是这种情况:
我有一个这样的列表列表,其中包含一些 1 和一些 0:
matrix =
[
[0,0,0,0,0,0,0],
[0,1,1,1,1,0,1],
[0,1,1,1,1,0,1],
[0,1,1,1,1,0,1],
[0,0,0,0,0,0,0],
]
所以我在这样的特定坐标中输入列表列表
y = 3
x = 3
从这个 position 我需要标记(例如 2)开始 position 附近的所有坐标,其中 1 在框中。 当我用 2 标记所有接近起点的位置时停止。
这是预期的结果:
expected_matrix =
[
[0,0,0,0,0,0,0],
[0,2,2,2,2,0,1],
[0,2,2,2,2,0,1],
[0,2,2,2,2,0,1],
[0,0,0,0,0,0,1],
]
编辑:我无法扫描所有列表,因为我不想标记每个 1,而只标记起点最接近的(与起点坐标内的 0 一起(行广告列))
谢谢。
由于您的描述不清楚,所以我在这里做一些假设:
path
它会将所有1
标记为2
。 基于这些假设,问题可以这样解决:matrix =[
[0,0,0,0,0,0],
[0,1,1,1,1,0],
[0,1,1,1,1,0], # ???
[0,1,1,1,1,1], # <- 3, 3?
[0,0,0,0,1,1],
]
R = len(matrix) # 5
C = len(matrix[0]) # 6
start_r, start_c = 3, 3
for i in range(start_r, R):
for j in range(start_c, C):
#print(i, j, matrix[i][j]) #can comment out
matrix[i][j] = 2 # mark it to 2
print(matrix)
好的,我终于找到了解决方案。
#upside
for yy in range(y,-1,-1):
if matrix[yy][x] == 0:
break
for xx in range(x,-1,-1):
if matrix[yy][xx] == 0:
break
matrix[yy][xx] = 2
for xx in range(x+1, len(matrix[y])):
if matrix[yy][xx] == 0:
break
matrix[yy][xx] = 2
#downside
for yy in range(y, len(matrix)):
if matrix[yy][x] == 0:
break
for xx in range(x,-1,-1):
if matrix[yy][xx] == 0:
break
matrix[yy][xx] = 2
for xx in range(x+1, len(matrix[y])):
if matrix[yy][xx] == 0:
break
matrix[yy][xx] = 2
也许可能是一个递归解决方案,但这无论如何都可以帮助我!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.