grid = [[4, 9, 2], [3, 5, 7], [8, 1, 6]]
if all(x in grid for x in [1, 2, 3, 4, 5, 6, 7, 8, 9]):
print('yes')
这在尝试时不会打印任何内容,但是当我对包含数字 1 到 9 的普通列表执行相同操作时,它打印得很好。我如何检查值 1 到 9 是否包含在二维列表中?
最佳答案
您可以选择 flatten grid
然后搜索:
flattened_grid = [item for sub_list in grid for item in sub_list]
if all(x in flattened_grid for x in [1, 2, 3, 4, 5, 6, 7, 8, 9]):
print("yes")
或者您可以检查x
是否在中
any
子列表:
if all(any(x in sub_list for sub_list in grid) for x in [1, 2, 3, 4, 5, 6, 7, 8, 9]):
print("yes")
all
-only 方法不起作用的原因是:您正在对照列表检查 x
,它是一个整数;但它们永远不会比较相等,并且 in
每次检查都将为 False
。
关于python - 为什么所有的都适用于常规列表而不是二维列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67061846/