#python
Следующий фрагмент кода бросается в глаза своей "топорностью", поэтому хочу его сделать более красивым. Делаю простой конвертер изображения из rgb в hex, поэтому значение должно быть на интервале [0;255] if number < 0: number = 0 if number > 255: number = 255 Можно ли средствами Python уменьшить код?
Ответы
Ответ 1
Попробуйте так: def clip(val, min_=0, max_=255): return max(min_, min(max_, val)) тесты: In [12]: clip(100) Out[12]: 100 In [13]: clip(1000) Out[13]: 255 In [14]: clip(-1000) Out[14]: 0 по совету @Bogdan, добавлю вариант с использованием тернарного оператора: def clip(val, min_=0, max_=255): return min_ if val < min_ else max_ if val > max_ else val для тех, кто использует Numpy - в Numpy существует готовая функция np.clip(): Пример: import numpy as np In [34]: a = np.arange(10) In [35]: a Out[35]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) In [36]: clipped = np.clip(a, 3, 8) In [37]: clipped Out[37]: array([3, 3, 3, 3, 4, 5, 6, 7, 8, 8])
Комментариев нет:
Отправить комментарий