当列表列表中的所有项目都等于一个值时,如何设置 if 语句?

How can I set an if statement when all the items in a list of lists equal one value?

我正在尝试编写一个场景,其中列表列表中的每个值都相同。

在这种情况下,这是我的列表最初的样子。

value = []
for i in range(10):
    value.append([])
    for j in range(10):
        value[i].append(0)

这将创建一个如下所示的列表:(其中的一部分)

>>> [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0...

然后我以某种方式将其随机化,随机值变为 1 以显示状态变化。

所以它看起来像:

>>> [[0, 1, 0, 1, 0, 1, 0, 0, 0, 1], [1, 1, 1, 0, 0, 1, 0, 1, 0, 1], [0, 0, 0, 0, 1...

这就是我想要做的。 当每个列表中的每个值都变回 0 时,我想要一些方法来识别它们都等于 0。

这样就可以像if语句一样使用,这样当它们都为0时,就会触发一些事情发生,比如执行由此引起的另一个功能。

我考虑过使用 all() 功能,但似乎效果不佳:

if all(i=True in range(all(j==0 in value[i][j]))): 
    if all(i==0 for value[j] in value for j in value)

是的,你可以使用 all():

if all(item==0 for item in sublist):

或者您可以使用 set:

if set(sublist) == {0}:

如果您要查找整个结构中的每个子列表何时为 0,则应如下所示:

if all(item==0 for sublist in structure for item in sublist):

或者这个:

if {item for sublist in structure for item in sublist} == {0}:

这个有点创意:

if '1' not in repr(list):

当然,这不是 for 循环的一部分。但这是最有效的方法之一。