Python 如何在2d列表的所有行和列中检查和操作匹配值?
我有一个二维列表,其中包含随机值[$%]、[$$%]、[$$%]、[\\@$$]、[\$%] 这向用户显示为:Python 如何在2d列表的所有行和列中检查和操作匹配值?,python,list,Python,List,我有一个二维列表,其中包含随机值[$%]、[$$%]、[$$%]、[\\@$$]、[\$%] 这向用户显示为: # $ % $ $ # $ % # @ $ $ # $ % @ 用户输入行号(0-3)和列号(0-3)。如何检查从该点开始有多少个连续匹配字符。从选定点开始,匹配可以是垂直的,也可以是水平的。行中必须有2个相同字符才能视为匹配 例如,如果用户输入第2行第2列,它将“拾取”括号内的值(实际上不显示此部分): 然后从中水平或垂直查找匹配的符号。 在这种情况下,它应该使分数=2,因为在用户
# $ % $
$ # $ %
# @ $ $
# $ % @
用户输入行号(0-3)和列号(0-3)。如何检查从该点开始有多少个连续匹配字符。从选定点开始,匹配可以是垂直的,也可以是水平的。行中必须有2个相同字符才能视为匹配
例如,如果用户输入第2行第2列,它将“拾取”括号内的值(实际上不显示此部分):
然后从中水平或垂直查找匹配的符号。
在这种情况下,它应该使分数=2,因为在用户点上方有一个美元符号,在用户点右侧有一个美元符号。匹配3个符号后,这些符号应从“$”更改为“x”
请帮忙。
这就是我目前所拥有的
#checking matches right
count=0
for i in range(col, len(board)):
if(board[row][i] == board[row][col]):
count+=1
#checking matches left
for i in range(col, -1, -1):
if(board[row][i] == board[row][col]):
count+=1
#checking matches up
for i in range(row, -1, -1):
if board[i][col] == board[row][col]:
count+=1
#checking matches down
for i in range(row, len(board)):
if(board[i][col] == board[row][col]):
count+= 1
return count
如果要水平或垂直获取每个符号,可以这样做
a = ["#$%$", "$#$%", "#@$$", "#$%@"]
print(a[2][2] + "\n")
# Horizontally
for i in range(4):
print(a[2][i])
print()
# Vertically
for i in range(4):
print(a[i][2])
我将把计算匹配数和修改匹配数留给您,除非您能向我们展示您的代码,这样您就可以证明您试图解决它,这样我们就可以更具体地帮助您。代码:
import numpy as np
lenght = np.array([[3,5,4,4,9],
[5,1,3,6,2],
[3,1,3,3,2],
[3,1,3,3,2],
[3,1,3,3,2],
[3,1,2,5,1]])
print(lenght)
in_row = 2
in_col = 2
in_repl = 99
target_value = lenght[in_row, in_col]
print(target_value)
lenght[np.nonzero(lenght[:, in_col] == target_value), in_col] = 99
lenght[in_row, np.nonzero(lenght[in_row, :] == target_value)] = 99
print(lenght)
输出:
[[3 5 4 4 9]
[5 1 3 6 2]
[3 1 3 3 2]
[3 1 3 3 2]
[3 1 3 3 2]
[3 1 2 5 1]]
3
[[ 3 5 4 4 9]
[ 5 1 99 6 2]
[99 1 99 99 2]
[ 3 1 99 3 2]
[ 3 1 99 3 2]
[ 3 1 2 5 1]]
请显示您的代码尝试。我添加了我的尝试到目前为止我添加了我的尝试到目前为止您有没有任何方法可以向我演示如何在不使用numpy的情况下执行此操作?我们将不胜感激。
[[3 5 4 4 9]
[5 1 3 6 2]
[3 1 3 3 2]
[3 1 3 3 2]
[3 1 3 3 2]
[3 1 2 5 1]]
3
[[ 3 5 4 4 9]
[ 5 1 99 6 2]
[99 1 99 99 2]
[ 3 1 99 3 2]
[ 3 1 99 3 2]
[ 3 1 2 5 1]]