Python - 在列表理解中保持计数器

标签 python counter list-comprehension

是否可以为以下循环编写列表理解?

m = []
counter = 0
for i, x in enumerate(l):
    if x.field == 'something':
        counter += 1
        m.append(counter / i)

我不知道如何在列表理解中增加计数器。

最佳答案

你可以使用 itertools.count :

import itertools as IT
counter = IT.count(1)
[next(counter)/i for i, x in enumerate(l) if x.field == 'something']

为了避免 tobias_k 指出的可能的 ZeroDivisionError,您可以使用 enumerate(l, start=1)enumerate 从 1 开始计数:

[next(counter)/i for i, x in enumerate(l, start=1) 
 if x.field == 'something']

关于Python - 在列表理解中保持计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27778604/

相关文章:

javascript - 跟踪数组内多个值的计数器

jquery - 制作数字变化的效果

coding-style - 在 COBOL 中重置计数器的正确方法

python - 矩阵操作 - 为什么正常循环会产生不同的结果?

c - 使用 C 加速 Python 中的列表操作

python - 通过理解避免将重复项插入 Python 列表

python - 如何在 python Flask-peewee 中反转外键

python - Python 中用参数修饰是什么意思?

python - 如何使用 Python 响应 HTTP 请求

python - 需要绘制图像来替换PyQt5中的矩形