索引问题在python中创建一个计数器

时间:2016-12-21 21:31:25

标签: python

我想要做的是列表中0值的计数器。 我正在尝试使用python制作一个计数器,但它似乎无法正常工作。 我需要使用所有值来计算最终列表。

我的代码是:

count=[0,0,0,0,0]  #counter
mylist=[0.9971989983534086, 0.9855488723192819, 0, 0.979924988605467, 0.9740293465156515]

for V in mylist:

    J=mylist.index(V) #J is the index of V 
    if V==0:
        count[J] = count[J] + 1

print count

结果我有:

[0, 0, 1, 0, 0]

问题是当我在mylist上有2个零时:

count=[0,0,0,0,0]  #counter
mylist=[0.9971989983534086, 0.9855488723192819, 0, 0.979924988605467, 0]

for V in mylist:

    J=mylist.index(V)
    if V==0:
        count[J] = count[J] + 1

print count

结果是: [0, 0, 2, 0, 0]代替[0, 0, 1, 0, 1]

如果V == 0,它看起来总是相同的J.

有什么想法来解决它吗?

3 个答案:

答案 0 :(得分:1)

index()只会在0的第一个实例列表中显示您的位置。相反,您可以创建一个列表推导,它将迭代整个列表一次,并在每次该列表中的项目等于零时创建1

mylist = [0.9971989983534086, 0.9855488723192819, 0, 0.979924988605467, 0.9740293465156515, 0]
counter = [1 if item == 0 else 0 for item in mylist]
print counter

答案 1 :(得分:1)

您可以使用enumerate

count=[0,0,0,0,0]  #counter
mylist=[0.9971989983534086, 0.9855488723192819, 0, 0.979924988605467, 0]

for i, V in enumerate(mylist):
    if V==0:
        count[i] += 1

print count

答案 2 :(得分:0)

mylist.index(V)返回第一次出现的索引(https://docs.python.org/2/tutorial/datastructures.html),快速解决方法是:

J=0
for V in mylist:
    if V==0:
        count[J] = count[J] + 1
    J = J + 1