Как получить элементы из указанного диапазона c из списка? - PullRequest
0 голосов
/ 02 апреля 2020

Кто-нибудь знает, как получить элементы в списке, значения которых попадают в заданный диапазон c (от - до)?

Мне нужно al oop, чтобы проверить, содержит ли список элементы в указанном диапазоне c, и если они есть, мне нужно сохранить самый большой из них в переменной ..

Пример:

list = [0.5, 0.56, 0.34, 0.45, 0.53, 0.6]

# range (0.5 - 0.58)
# biggest = 0.56

Ответы [ 3 ]

3 голосов
/ 02 апреля 2020

Вы можете использовать отфильтрованное понимание, чтобы получить только те элементы в нужном диапазоне, а затем найти самый большой из них, используя встроенный max():

lst = [0.5, 0.56, 0.34, 0.45, 0.53, 0.6]
biggest = max([e for e in lst if 0.5 < e < 0.58])
# biggest = 0.56
0 голосов
/ 02 апреля 2020

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

lst = [0.5, 0.56, 0.34, 0.45, 0.53, 0.6]
biggest = max([i for i in filter(lambda x: 0.5 < x < 0.58, lst)])

Я полагаю, что нормальный, если проверка будет быстрее, но я дам это только для полноты .

Кроме того, вы не должны использовать list = ..., поскольку list является встроенным в python.

0 голосов
/ 02 апреля 2020

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

Это должно работать так:

import numpy as np

l = [0.5, 0.56, 0.34, 0.45, 0.53, 0.6]

a = np.array(l)

low = 0.5
high = 0.58

index_low = (a < high) 
print(index_low)

a_low = a[index_low]
print(a_low)

index_in_range = (a_low >= low)
print(index_in_range)

a_in_range = a_low[index_in_range]
print(a_in_range)

a_max = a_in_range.max()
print(a_max)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...