2016-12-21 54 views
0

我想要做的是一個列表中0值的計數器。 我想使用python做一個計數器,但它似乎不工作。 我需要擁有所有值的最終列表數。在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個0:

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]

它看起來像它總是相同的J如果V == 0。

任何想法解決它?

+3

獲取指數'mylist.index(V)'返回'0'的_first_事件的索引。它總是會是同一個地方,因此爲什麼相同的數字正在增加。另外,你的代碼可以用'print([int(a == 0)for a mylist])'代替,它產生'[0,0,1,0,1]'。 –

+3

如果您正在遍歷'mylist'並且想獲得'V'的索引,爲什麼不直接使用'for i,在枚舉(myList)中使用V? – Jakub

回答

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 
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