检查索引是否在二维列表中 [Python]
Check if index is inside 2d list [Python]
我必须编写一个函数 (def) 来检查我编写的索引是否在二维列表中。如果是,则必须 return True,否则必须 return False。
def height(board):
height=0
for x in board:
height+=1
return height
def width(board):
wid=len(board[0])
return wid
def on_board(board, x, y):
check=False
x1 = int(x)
y1 = int(y)
for x,y in board:
if x1 > height(board) or y1 > width(board):
check=False
else:
check=True
return check
列表看起来像这样:
board = [["V1", "V1"],
["V2", "V2"],
["V3", "V3"]]
最简单的方法是使用 try..except..else
,它将尝试访问板上的那个位置。如果有效,则它是一个有效位置,将输入 else
块。如果不是,则不是,将进入 except
块。作为奖励,您还可以检查 x
和 y
是否为有效整数。这里的任何失败都会产生 False
.
def on_board(board, x, y):
try:
board[int(x)][int(y)]
except (ValueError, IndexError):
return False
else:
return True
另外,棋盘的高度简直就是def height(board): return len(board)
。但是如果你为了on_board()
而只有height()
和width()
,那么你根本就不需要height()
和width()
。
与 determined in chat 一样,正在检查您的程序的测试套件像我们一样使用 0 索引的行和列,但第一个值是列(就像图表上的 x 坐标)和第二个值是行。它也不接受 -1
的索引供用户指示最后一个 row/column。最后,它已经用整数测试了函数,因此不需要使用 int()
.
进行转换
def on_board(board, x, y):
return x in range(len(board[0])) and y in range(len(board))
这检查x
是否在0
(含)和一行中的列数(不含)之间,以及y
是否在[=27=之间](含)和棋盘中的行数(不含)。然后 returns 判断这两个条件是否都成立的布尔值。
你可以使用你写的两个方法,然后你的on_board
方法可以简单地检查那些
def height(board):
return len(board)
def width(board):
return len(board[0])
def on_board(board, x, y):
return x < width(board) and y < height(board)
例如
>>> board = [["V1", "V1"],
["V2", "V2"],
["V3", "V3"]]
>>> on_board(board, 1, 0)
True
>>> on_board(board, 3, 4)
False
我必须编写一个函数 (def) 来检查我编写的索引是否在二维列表中。如果是,则必须 return True,否则必须 return False。
def height(board):
height=0
for x in board:
height+=1
return height
def width(board):
wid=len(board[0])
return wid
def on_board(board, x, y):
check=False
x1 = int(x)
y1 = int(y)
for x,y in board:
if x1 > height(board) or y1 > width(board):
check=False
else:
check=True
return check
列表看起来像这样:
board = [["V1", "V1"],
["V2", "V2"],
["V3", "V3"]]
最简单的方法是使用 try..except..else
,它将尝试访问板上的那个位置。如果有效,则它是一个有效位置,将输入 else
块。如果不是,则不是,将进入 except
块。作为奖励,您还可以检查 x
和 y
是否为有效整数。这里的任何失败都会产生 False
.
def on_board(board, x, y):
try:
board[int(x)][int(y)]
except (ValueError, IndexError):
return False
else:
return True
另外,棋盘的高度简直就是def height(board): return len(board)
。但是如果你为了on_board()
而只有height()
和width()
,那么你根本就不需要height()
和width()
。
与 determined in chat 一样,正在检查您的程序的测试套件像我们一样使用 0 索引的行和列,但第一个值是列(就像图表上的 x 坐标)和第二个值是行。它也不接受 -1
的索引供用户指示最后一个 row/column。最后,它已经用整数测试了函数,因此不需要使用 int()
.
def on_board(board, x, y):
return x in range(len(board[0])) and y in range(len(board))
这检查x
是否在0
(含)和一行中的列数(不含)之间,以及y
是否在[=27=之间](含)和棋盘中的行数(不含)。然后 returns 判断这两个条件是否都成立的布尔值。
你可以使用你写的两个方法,然后你的on_board
方法可以简单地检查那些
def height(board):
return len(board)
def width(board):
return len(board[0])
def on_board(board, x, y):
return x < width(board) and y < height(board)
例如
>>> board = [["V1", "V1"],
["V2", "V2"],
["V3", "V3"]]
>>> on_board(board, 1, 0)
True
>>> on_board(board, 3, 4)
False