python - 计算列表中子列表的特定索引中值的实例,但每个列表只计算一次

标签 python python-3.x list loops

我有类似这样的数据:

[[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/

相关文章:

Python:如何通过循环将 Dataframe 中的 2 列相乘来仅替换列中的 0 个值?

Python tkinter Canvas 在启动期间获取可见区域

python - 获取dir(class)中变量的值

python - struct.unpack 导致TypeError :'int' 不支持buffer接口(interface)

python-3.x - pip 安装速度极慢

python - KNeighborsClassifier 是否比较不同大小的列表?

python - 如何复制 numpy 数组中最后一个维度的值?

json - ansible 从寄存器变量访问项目

html - 全尺寸链接作为缩进嵌套无序列表中的 block ?

python - 在列表中查找字符串的索引