python - 数组中元素的位置
问题描述
我需要根据数值数组中值的存在来找到索引的位置。我知道我可以对 list 使用 .index(value) 方法,但如果数组中不存在值,我不希望代码退出或给出 None 或任何其他类型的异常。相反,如果列表中不存在确切的值,我想知道相邻的数组索引值。希望下面的示例可以清楚地说明问题。
arr = [10,20,30,40,50]
Input: 25
Output: 1,2
Input: 20
Output: 1
基本上,代码返回在其中查找搜索输入的数组中相邻值的索引。
解决方案
对于非 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]
推荐阅读
- c# - 序列化增加大小
- python - 从 QDialog pyqt 打开 QMainwindow
- django - 用于在模型中返回绝对 url 的 Django 单元测试
- asp.net-core-2.1 - asp.net core 2.1 使用 IWebHostBuilder GetSetting 读取 Program.cs 中的 appsettings
- c++ - *unsigned char 中的索引值
- elasticsearch - 首先排序n弹性搜索中的数据数?
- python - 在 python 中使用 plotnine 将 pdf 与直方图一起绘制
- php - PHP 将 if 命令放入数组中
- python - 如何找到最频繁的像素值?
- php - 如何在 php 中获取时区完整形式的“印度标准时间”?