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



我制作了一个函数,它返回给定项的索引列表,而不仅仅是第一个。但是,当找不到项时,它不会抛出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)`

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

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

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

for _ in range(0):

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

最新更新