как использовать Python лямбда в этом случае - PullRequest
0 голосов
/ 13 октября 2018

Короткий вопрос: я пытаюсь создать цвет из существующего цвета, вычитая 10 из каждого канала, если значение больше 0, есть короткий способ написать это?Я не знаю, как использовать лямбду в этом случае, может кто-нибудь сказать мне?

self.color = [color[x]-10 if lambda x: color[x]>0 for x in range(0,3)]

Редактировать: все остальные каналы во вновь созданном цвете должны быть равны 0

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Обратите внимание, что вы можете вычесть 10, только если окончательное значение больше 0, в противном случае вы получите отрицательные значения.

Вы можете сделать это следующим образом:

[color[x]-10 if color[x]>10 else color[x] for x in range(0,3)]

или болеепросто, так как вам не нужно использовать индексы:

color = [5, 14, 12]
[c-10 if c>10 else c for c in  color]
# 5, 4, 2

Если вы хотите сократить значения до 0, вы можете сделать:

color = [5, 14, 12]
[c-10 if c>10 else 0 for c in color]
# [0, 4, 2]
0 голосов
/ 13 октября 2018

Зачем вам лямбда?

self.color = [color[x]-10 for x in range(0,3) if color[x]>0]

Или еще лучше:

self.color = [col-10 for col in color if col>0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...