python - 获取列表中最近的非无项目
问题描述
我需要找到一种方法,让 anarray
和 anindex
获取该索引中项目的最接近的 non-None 值。
例如:
array = [4, 5, 1, None, 9, None, 7, 8]
index = 4
我需要array[index]
在左侧和右侧获取最接近的整数:
print(array[index])
# 9
预期输出:
on_left = 1
on_right = 7
当前解决方案
这就是我所拥有的:
value = array[index]
new_array = [val for val in array if val]
print(new_array)
# [4, 5, 1, 4, 7, 8]
new_array.index(value)
# 0
*然后我将使用该索引来获取右侧和左侧项目
如您所见,这里的问题发生在重复数字时,在此示例中,我得到的是第一个4
而不是第二个的索引,您将如何解决这个问题?
解决方案
您可以在数组的子集上使用 next 函数,从下一个位置向前(右侧)开始,在前一个位置向后(左侧):
array = [4, 5, 1, None, 4, None, 7, 8]
index = 4
on_right = next(v for v in array[index+1:] if v is not None)
on_left = next(v for v in array[index-1::-1] if v is not None)
print(on_left,on_right) # 1 7
推荐阅读
- javascript - 我怎样才能让这个 javascript 工作不止一次?
- python - 如何为每个交叉验证折叠显示混淆矩阵和报告(召回、精度、fmeasure)
- testing - 在 Flutter 测试中获取小部件的位置?
- reactjs - undefined is not a function '(0, _reactNavigation.StackNavigator)' 未定义)
- amazon-web-services - aws ebs 快照与 sc1“冷”hhd 的优势
- clojurescript - 使用 js->clj 转换为 json 时如何将关键字保留在数组中?
- java - 将 SQL 连接到 php 或 java
- java - Oracle JDBC 从过程中获取 SYS_REFCURSOR
- python - 我的 python 代码中不断出现“invalid \x escape”错误。我究竟做错了什么?
- python - Peewee ORM:根据外键字段(backrefs)上的属性进行选择