Уведомления

Группа в Telegram: @pythonsu

#1 Май 29, 2013 19:39:14

DerHer
Зарегистрирован: 2013-05-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверить вхождения чисел из списка в заданный интервал.

Привет всем!
Не могу написать красиво следующие, т.к. плохо знаю язык :
Есть list(r,g,b), все значения лежат в пределах 0-255
Есть допустимые отклонения, тоже в виде списка list(r_variation, g_variation, b_variation).
В функцию приходит list(x,y,z), значения которого так же лежат в пределах 0-255.
Нужно вернуть True, если выполняется условие:
r - r_variation <= x <= r + r_variation, для всех трех элементов списка, иначе вернуть False

color = (255,255,255)
variation = (255,255,255)
raw_color = (0,0,0)
def test(color, variation, raw_color):
    fixme = color[0] - variation[0] <= raw_color[0] <= color[0] + variation[0], color[1] - variation[1] <= raw_color[1] <= color[1] + variation[1], color[2] - variation[2] <= color[2] <= raw_color[2] + variation[2]
    for x in fixme:
        if x == False:
            return False
    return True
print(test())
Вверху текущая реализация

Офлайн

#2 Май 29, 2013 19:52:18

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Проверить вхождения чисел из списка в заданный интервал.

def test(color, variation, raw_color):
    return all(map(lambda a, b, c: (a - b <= c) and (c <= a + b), color, variation, raw_color))

Офлайн

#3 Май 29, 2013 19:59:09

DerHer
Зарегистрирован: 2013-05-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверить вхождения чисел из списка в заданный интервал.

Офлайн

#4 Май 29, 2013 20:32:38

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проверить вхождения чисел из списка в заданный интервал.

lambda a, b, c: a - b <= c <= a + b
Так тоже можно.
Если всё будет работать медленно, можно посмотреть в сторону numpy.

Отредактировано Shaman (Май 29, 2013 20:38:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version