我想要做的是列表中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.
有什么想法来解决它吗?
答案 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