выбрать лучший индекс среди двух списков, состоящих из значений, которые имеют различный диапазон для каждого списка Python - PullRequest
0 голосов
/ 19 марта 2019

У меня есть два списка, где каждый список состоит из значений с различным диапазоном.Списки имеют одинаковую длину.Например,

list1 = [59.6613, 176.3425, 243.9645, 63.9865, 803.6346, 163.8992, 704.3893,
563.9846, 631.4968, 98.6483, 156.7823, 380.8432]
list2 = [27069, 9608, 12875, 35083, 7569, 8075, 6032, 10983, 7962, 43218,
3219, 9328]

для лучшей читаемости:

index              list1              list2
  0               59.6613             27069
  1              176.3425              9608
  2              243.9645             12875
  3               63.9865             35083
  4              803.6346              7569
  5              163.8992              8075
  6              704.3893              6032
  7              563.9846             10983
  8              631.4968              7962
  9               98.6483             43218
 10              156.7823              3219
 11              380.8432              9328

В этом случае ответом будет индекс 7, поскольку оба эти значения не слишком низкие по сравнению с другими значениями.Как мне сделать условия, которые выбирают этот индекс?Я попытался выбрать индекс с условиями, подобными этому сообщению , выбрав лучший индекс по условию среди трех списков с различным диапазоном значений в python

Но значения не всегда будут превышать порогЯ установил.Это может варьироваться.Что делает это намного сложнее, поскольку я новичок.

edit: я не могу установить порог, потому что, если я установил порог, и ни одно из значений не может соответствовать или превышать порог, у меня остаются данные.Вот почему мне нужно создать условие, которое динамически выбирает лучший индекс, который имеет значение в верхней части каждого списка в соответствии с набором значений в каждом списке.Я говорю это потому, что могут быть случаи, когда индекс list1 имеет высокое значение, но тот же индекс list2 имеет низкое значение.В таком случае я не могу выбрать этот индекс.

1 Ответ

0 голосов
/ 19 марта 2019

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

threshold1 = 300   # thrashold for list 1
threshold2 = 10000 # thrashold for list 2


list1 = [59.6613, 176.3425, 243.9645, 63.9865, 803.6346, 163.8992, 704.3893,
563.9846, 631.4968, 98.6483, 156.7823, 380.8432]
list2 = [27069, 9608, 12875, 35083, 7569, 8075, 6032, 10983, 7962, 43218,
3219, 9328]

zipped_lists = list(zip(list1, list2))


filtered_data = list(
    filter(
           lambda zipped_item: all((zipped_item[0] > threshold1, zipped_item[1] > threshold2)),
           zipped_lists)
)

try:
    print(zipped_lists.index(filtered_data[0]))
except IndexError:
    print('No data which satisfies condition')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...