为什么找不到值时list.index()不会引发ValueError?

时间:2018-11-03 06:49:28

标签: python-3.x

我制作了一个函数,该函数返回给定项目的索引列表,而不仅仅是第一个。但是,当找不到该项目时,它不会抛出ValueError exception,而是返回一个空列表。

我在做什么错?当我在解释器中执行此操作时,它会引发应有的异常。

def find_items(array, item):
    ''' searches a list or tuple and returns
    a list of indices for a given item '''
    indices = []
    position = 0
    for _ in range(array.count(item)):
        indices.append(array.index(item, position))
        position = indices[-1] + 1
    return indices              

numbers = [42, 1, 2, 3, 42, 42, 42, 5, 6, 7, 8, 9, 42]
found_indices = find_items(numbers, 1000)`

1 个答案:

答案 0 :(得分:1)

array.count(item)返回项目出现在列表中的次数。

例如:array.count(42)将为您的输入返回 5

在您的情况下1000次出现0次,因此您的代码变为:

for _ in range(0):

简而言之,您的for循环不会运行,因此它会在初始化时返回空列表。