【问题标题】:Get Nearest non-None Item in List获取列表中最近的非无项目
【发布时间】:2021-02-12 17:45:26
【问题描述】:

我需要找到一种方法,通过 arrayindex 获取该索引中项目的最接近的非无值。

例如:

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 而不是第二个的索引,您将如何解决这个问题?

【问题讨论】:

  • 我已经解决了这些问题,感谢您让我知道这一点。

标签: python arrays python-3.x


【解决方案1】:

您可以在数组的子集上使用 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

【讨论】:

    猜你喜欢
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2016-11-08
    • 2013-07-21
    相关资源
    最近更新 更多