查找两个数组中的下一个最大整数

时间:2014-07-16 16:14:41

标签: python

我有两个数组,arr_xarr_y。这些数组包含整数1到20,没有重复,并且并非所有1到20的整数都在这些数组中。例如:

arr_x = [4,5,6,7]
arr_y = [16,15,14,13]

我从1开始算起来,让我说到7,我想找到这些数组中 的下一个最大整数,然后执行一个动作,如果它在arr_y,如果它位于arr_x,则不执行任何操作。

参考它会发现的例子,这两个数组中的下一个最大整数是13,它在arr_y中,所以它会执行动作。

我一直坚持这个没有嵌套所有这些if和for循环,它变得非常草率,任何想法?

2 个答案:

答案 0 :(得分:1)

我能想到的最简单的答案:过滤掉所有低于或等于7的值,然后选择剩余的最低值。

try:
    # Replace 7 with increasing variable if run in loop.
    if min(filter(lambda n: n > 7, arr_x + arr_y)) in arr_y:
        perform_some_action()
except IndexError:
    print('There is no next biggest integer.')

答案 1 :(得分:1)

我扩展了@Banana的答案以包含值来自哪个列表所以应该很容易检查它是否来自arr_y使用...

if findNextLargest(arr_x,arr_y)[1] #to check if it is arr_y


def findNextLargest(arr_x,arr_y):
    res = False
    for i,each in enumerate([arr_x,arr_y]):
    #enumerate will mark which list it comes from
    #order is important so you can overwrite answer if found in X and Y, Answer Priority is given to Y

        filtered = filter(lambda n: n > 7,each) #filters using @Banana logic
        if filtered:res=  (min(filtered),i)     #grabs next largest using @Banana logic
return res #returns a tuple where first value is the next largest value and second is the list it comes from where 1 is y and 0 is x