лучший способ найти индекс значения, превышающего пороговое значение в + ve slope - PullRequest
0 голосов
/ 13 января 2020

У меня есть список кортежей со значениями индекса и счетом, как показано ниже

count_array = [(1, 10000), (2, 15000), (3, 3000), (4, 500), (5, 600), (6, 2000), (7, 10000)]

И пороговым значением как 1000, как показано ниже

threshold = 1000

Я написал пример кода, который дает мне индекс значение no и значение, превышающее значение shold в + ve slope

def findIndex():
    index = 0
    count = 0
    for x, y in count_array:
        if y < threshold:
            index = x
    for x, y in count_array:
        if x > index:
            return x, y

print(findIndex())

output: (6, 2000)

Может кто-нибудь мне помочь, есть ли другой способ быстрее реализовать логику c способ

Ответы [ 2 ]

1 голос
/ 13 января 2020

Вы можете отсортировать его до и после извлечения по индексу:

>>> count_array = [(1, 10000), (2, 15000), (3, 3000), (4, 500), (5, 600), (6, 2000), (7, 10000)]

>>> print(count_array[sorted(count_array, key=lambda obj: obj[1] < threshold)[-1][0]])
>>> (6, 2000)
1 голос
/ 13 января 2020

Если вам нужно оптимизировать то, что вы точно написали, вы можете просто пропустить второй for, поскольку вам нужен следующий индекс после первого for l oop. Это должно работать:

count_array = [(1, 10000), (2, 15000), (3, 3000), (4, 500), (5, 600), (6, 2000), (7, 10000)]
threshold = 1000


def find_index(count_array, threshold):
    index = 0
    for x, y in count_array:
        if y < threshold:
            index = x

    return count_array[index]


print(find_index(count_array, threshold))

>>> (6, 2000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...