我尝试了几种方法,但似乎没有一种对我有用。
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"
尽管第二种方法通常可以使数组填充得更多,但是这些方法均无效。 (我编写了代码以随机填充数组。)
答案 0 :(得分:2)
我将尝试解决您做错的事情:
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
答案 1 :(得分:0)
再次尝试使用chain
中的itertools
(这样可用于多行):
from itertools import chain
board = [[0,0,0,0],[0,0,0,0]]
def find_in_2d_array(arr, value):
return value in chain.from_iterable(arr)
print(find_in_2d_array(board, 0))
print(find_in_2d_array(board, 1))
打印:
True
False
答案 2 :(得分:0)
您需要遍历列表的所有索引,以查看元素是否为嵌套列表之一中的值。您可以简单地遍历内部列表并检查元素是否存在,例如:
if not any(0 in x for x in board):
pass # the board is full
使用any()
会在遇到包含0
的元素时起到短暂的作用,因此您不需要遍历其余元素。
答案 3 :(得分:0)
如果您可以使用标准库numpy
之外的工具,则是长期使用多维数组的最佳方法。
board = [[0,0,0,0],[0,0,0,0]]
board = np.array(board)
print(0 in board)
输出:
True