在这种情况下如何使用python lambda

时间:2018-10-13 08:22:58

标签: python lambda

简短的问题:如果值大于0,我想通过从每个通道中减去10来从现有颜色中创建一种颜色,有没有一种简短的编写方法?在这种情况下,我不知道如何使用lambda,有人可以告诉我吗?

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

编辑:所有其他采用新创建颜色的通道应等于0

2 个答案:

答案 0 :(得分:0)

您为什么需要lambda?

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]

答案 1 :(得分:0)

请注意,如果最终值大于0,则只能减去10,否则将得到负值。

您可以这样做:

[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]