Python - 保持计数器内部列表理解

时间:2015-01-05 11:29:04

标签: python counter list-comprehension

是否可以为以下循环编写列表推导?

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

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

1 个答案:

答案 0 :(得分:9)

您可以使用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使enumerate(l, start=1)从1开始计数:

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