目前我得到的是一个网格,看起来像这样:
--d--
--d--
-d---
---d-
-d-d-
我正在尝试找到网格中每个'd'的位置。我能够使用一个简单的for循环来做到这一点,但是当我尝试在同一行找到两个's'时遇到问题,它只找到第一个而不是第二个。但是,由于它是以列表格式(不是100%确定我是否可以从该格式更改),.find()方法将无法工作。不确定是否有一种简单的方法可以解决这个问题,或者我是否需要完全重新考虑我的方法,但任何帮助都会有用。
我目前获得的搜索代码(没有尝试搜索多次出现,因为它破坏了所有内容)
假设棋盘是前面提到的网格
dirtyCellLocations = []
for idx, row in enumerate(board):
for letter in row:
if letter == 'd':
dirtyLocation = (idx, row.index('d'))
dirtyCellLocations.append(dirtyLocation)
如果您对网格形成的方式感兴趣,请使用此
board = [[j for j in raw_input().strip()] for i in range(5)]
答案 0 :(得分:1)
如果你有这样的董事会
board = ['--d--',
'--d--',
'-d---',
'---d-',
'-d-d-']
你可以做到
for row in range(len(board)):
for col, value in enumerate(board[row]):
if value == 'd':
print('[{},{}]'.format(row,col))
输出(格式为[row, column]
)
[0,2]
[1,2]
[2,1]
[3,3]
[4,1]
[4,3]
这也可以变成一个功能
def findIndices(board, x):
l = []
for row in range(len(board)):
for col, value in enumerate(board[row]):
if value == x:
l.append([row,col])
return l
>>> findIndices(board, 'd')
[[0, 2], [1, 2], [2, 1], [3, 3], [4, 1], [4, 3]]
答案 1 :(得分:0)
您需要枚举行和列。使用列表理解它看起来像这样:
grid = """--d--
--d--
-d---
---d-
-d-d-""".splitlines()
print [ (i, [j for j, ch in enumerate(row) if ch == 'd'])
for i, row in enumerate(grid)]
# [(0, [2]), (1, [2]), (2, [1]), (3, [3]), (4, [1, 3])]
但这有点难看,所以你可以将内部理解提取到一个函数中:
def get_dirties(row):
return [i for i, ch in enumerate(row) if ch == 'd']
all_dirties = [(i, get_dirties(row)) for row in enumerate(grid)]