函数一直返回相同的索引

时间:2017-03-02 17:01:49

标签: python python-3.x

我在字典中有一个浮点值列表。它的内容如下:

dic['area'] = [12.3, 3.7, 9.43, -1, -1, 55.32, 72.6]

带-1的位置是以前的字符串(?和 - ),它们不能转换为float。我写的函数应该返回那些负值的索引:

def find_index(x,y):
    for item in x:
        if item < 0:
            index = x.index(item)
            y.append(index)
        else:
            continue
    print (y)

其中x是dic [&#39; area&#39;] list,y是空列表。不幸的是,在

上使用该功能
dic['area'] = [12.3, 3.7, 9.43, -1, -1, 55.32, 72.6]

会回复我:

[3, 3]

并且每个小于0的下一个值将导致y列表另外附加3.为什么会发生?

1 个答案:

答案 0 :(得分:0)

因为index的作用是什么;返回匹配的第一个项的索引。

相反,您应该在使用enumerate

进行迭代时保留一个计数器
for i, item in enumerate(x):
    if item < 0:
        y.append(i)

注意,整个事情可以更好地编写为列表理解:

print([i for i, item in enumerate(x) if item < 0])