首页 > 解决方案 > 数组中元素的位置

问题描述

我需要根据数值数组中值的存在来找到索引的位置。我知道我可以对 list 使用 .index(value) 方法,但如果数组中不存在值,我不希望代码退出或给出 None 或任何其他类型的异常。相反,如果列表中不存在确切的值,我想知道相邻的数组索引值。希望下面的示例可以清楚地说明问题。

arr = [10,20,30,40,50]
Input: 25
Output: 1,2 

Input: 20
Output: 1

基本上,代码返回在其中查找搜索输入的数组中相邻值的索引。

标签: pythonpython-3.x

解决方案


对于非 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]

推荐阅读