如何从列表中获取项目但仅在满足条件后才获取?

0 python list

如果我有一个清单

\n
x=[0.0,0.0,2.0,3.0,0.0,2.0]\n
Run Code Online (Sandbox Code Playgroud)\n

我基本上想计算列表中的项目数量,但只在前导零之后开始,我该怎么做?请记住,我想计算列表中间的零,而不是开头的零。

\n

我\xe2\x80\x99已经尝试过这个:

\n
n=0\nfor i in x:\n    while i==0.0:\n       break\n    if i!=0.0:\n       n=n+1\n
Run Code Online (Sandbox Code Playgroud)\n

但它没有\xe2\x80\x99t 得到4,这是我想要的输出,因为我只想包含2.0,3.0,0.0,2.0。

\n

dea*_*hot 5

您可以使用itertools.dropwhile

from itertools import dropwhile
from collections import Counter

data = [0.0,0.0,2.0,3.0,0.0,2.0]
print(sum(1 for _ in dropwhile(lambda x: x == 0, data))) # 4

print(Counter(dropwhile(lambda x: x == 0, data))) # Counter({2.0: 2, 3.0: 1, 0.0: 1})

Run Code Online (Sandbox Code Playgroud)