我需要根据数值数组中值的存在来找到索引的位置。我知道可以将.index(value)方法用于列表,但问题是我不希望代码退出或给出None或任何其他类型的异常(如果值不存在于数组中)。相反,如果列表中没有确切的值,我想知道相邻的数组索引值。希望下面的示例使问题陈述清楚。
arr = [10,20,30,40,50]
Input: 25
Output: 1,2
Input: 20
Output: 1
基本上,代码返回要在其中搜索搜索输入的数组中相邻值的索引。
答案 0 :(得分:0)
对于非numpy方法,您可以将输入变量附加到列表中,对其进行排序,然后在新列表中找到输入的索引,并返回该索引以及先前的索引:
arr = [10,20,30,40,50]
i = 25
i_index = sorted(arr+[i]).index(i)
>>> [i_index-1, i_index]
[1, 2]
编辑根据您的评论:如果该值已经存在于数组中,那么我只需要该值的确切索引位置,否则我需要该值内的相邻索引值陷入
您可以将其包装在if语句中,以检查您的输入是否已经在数组中:
if i in arr:
idx = sorted(arr).index(i)
else:
i_index = sorted(arr+[i]).index(i)
idx = [i_index-1, i_index]
>>> idx
[1, 2]