2016-12-21 7 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] 

私はマイリストに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, 1, 0, 1]

の代わりに

V == 0の場合、常に同じJが必要なようです。

これを修正するにはどうすればよいですか?

+3

を使用することができます'mylist.index(V)'は '_'の最初の出現のインデックスを返します。それは常に同じ場所になるので、なぜ同じ数が増分されているのですか。また、あなたのコードは、 '[0、0、1、0、1]'を生成するprint([int(a == 0)in mylist]) 'に置き換えることもできます。 –

+3

'mylist'を反復して' V 'のインデックスを取得したいのであれば、 'for i、V in enumerate(myList)'を使うのはなぜですか? – 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 
関連する問題