我尝试了几种方法,但似乎都不适合我。
board = [[0,0,0,0],[0,0,0,0]]
if not 0 in board:
# the board is "full"
然后我试着:
if not 0 in board[0] or not 0 in board[1]:
# the board is "full"
这些方法都不起作用,尽管第二种方法通常会让数组填满更多。(我编写了代码来随机填充数组)。
发布于 2018-07-17 04:39:04
您需要遍历列表的所有索引,以查看某个元素是否为其中一个嵌套列表中的值。您可以简单地迭代内部列表并检查您的元素是否存在,例如:
if not any(0 in x for x in board):
pass # the board is full
每当遇到包含0
的元素时,使用any()
将充当临时停靠点,因此您不需要遍历其余的元素。
发布于 2018-07-17 04:40:45
我会试着解决你做错了的事情:
if not 0 in board[0] or not 0 in board[1]:
这几乎是正确的-但您应该使用and
,因为要被视为已满,两个主板不能同时为0。
一些选项:
if not 0 in board[0] and not 0 in board[1]: # would work
if 0 not in board[0] and 0 not in board[1]: # more idiomatic
if not(0 in board[0] or 0 in board[1]): # put "not" in evidence, reverse logic
if not any(0 in b for b in board): # any number of boards
发布于 2018-07-17 04:42:27
如果你可以在标准库之外使用工具,numpy
是处理多维数组的最佳方式。
board = [[0,0,0,0],[0,0,0,0]]
board = np.array(board)
print(0 in board)
输出:
True
https://stackoverflow.com/questions/51369718
复制相似问题