python - 为什么所有的都适用于常规列表而不是二维列表?

标签 python list

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/

相关文章:

r - 转置列表列表内的数据框

python - 循环更新列表中的项目

c# - 抽象类的嵌套列表<>属性

python - 如何根据条件连接 pandas 列中的字符串

python - python对象的内存分配

python - 在 matplotlib 中缩放轴 3d

python - Openshift 从 Django 应用中查找静态文件

python - 你如何用每个列表中的 2 个元素制作字典?

python - Django - 调用方法的自定义过滤器

python - 伊辛模型 : How to shorten simulation time?