【问题标题】:Python - keeping counter inside list comprehensionPython - 在列表理解中保留计数器
【发布时间】:2015-01-05 11:29:03
【问题描述】:

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

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

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

【问题讨论】:

  • 请注意,如果第一个(即“第零个”)元素满足条件,这可能会导致除以零。另外,你到底想达到什么目的?
  • 你是对的。我在运行中编写了该代码,但我忘记增加 1 i。我想计算average precision

标签: python counter list-comprehension


【解决方案1】:

你可以使用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']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多