本文介绍了Python-在列表理解中保持计数器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Is it possible to write a list comprehension for the following loop?

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

我不知道如何在列表理解范围内增加计数器.

I do not know how to increment the counter inside the list comprehension.

推荐答案

您可以使用 itertools.count :

You could use an 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开始计数:

To avoid the possible ZeroDivisionError pointed out by tobias_k, you could make enumerate start counting from 1 by using enumerate(l, start=1):

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

这篇关于Python-在列表理解中保持计数器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 01:50