我有类似这样的数据:
[[1, 1, 4]], [[1, 2, 4], [1, 7, 4]], [[2, 2, 4]]
我正在这样迭代:
count = 0
for list in lists:
for sublist in list:
if sublist[2] == 4:
count += 1
print(count)
输出总是以 4 结束。
我想遍历所有 3 个子列表列表,计算“4”在子列表的第三个索引中的时间。但是,在第二个列表中我只希望它计算一次,而不是两次。所以返回的值应该是 3,而不是 4。
最佳答案
如果您发现一个 子列表
在第三个位置有一个 4
,您可以简单地通过跳出最内层的循环来修复它。这基本上检查是否有任何 sublist
满足您的条件:
count = 0
for lst in lists:
for sublist in lst:
if sublist[2] == 4:
count += 1
break # just added that line
print(count)
# 3
我还将变量名 list
替换为 lst
,否则它会遮盖内置名称 list
.
这也可以写成:
>>> sum(any(sublist[2] == 4 for sublist in lst) for lst in lists)
3
或者,如果您想检查所有 sublist
是否满足条件,请将 any
替换为 all
:
>>> sum(all(sublist[2] == 4 for sublist in lst) for lst in lists)
3
关于python - 计算列表中子列表的特定索引中值的实例,但每个列表只计算一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45806110/