当列表列表中的所有项目都等于一个值时,如何设置 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
循环的一部分。但这是最有效的方法之一。
我正在尝试编写一个场景,其中列表列表中的每个值都相同。
在这种情况下,这是我的列表最初的样子。
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
循环的一部分。但这是最有效的方法之一。