增加列表理解的价值限制

2024-09-30 12:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到一种清晰的方法来获取两个int元组值之间的差异。元组本身也有局限性,尽管它们代表RGB颜色。到目前为止,我的情况是:

tupleone = (255, 0, 255)  # Magenta
tupletwo = (255, 0, 0)  # Red
tuple([tupleone[x] - tupletwo[x] for x in range(3)])  # makes Blue

我这里的问题是边界检查,因为每个颜色值必须是0-255。我要说的是,如果从一个较小的数中减去一个较大的数,那么对于给定的索引返回0。我用这个测试了一个索引:

value = -10
max(0, min(color, 255))  # value = 0

这是我可以用列表理解清楚地做到的吗?还是有更好的方法?你知道吗


Tags: 方法value颜色情况代表rgbred差异
2条回答

当然,只要把你有的结合起来:

tuple(max(0, min(tupleone[x] - tupletwo[x], 255)) for x in range(3))

这里有一个方法

tuple(sorted((0, 255, tupleone[x] - tupletwo[x]))[1] for x in range(3))

但也许你应该用一个函数

def clamp_0_255(x):
    return max(0, min(x, 255))

tuple(clamp_0_255(tupleone[x] - tupletwo[x]) for x in range(3))

旁白:你不需要使用列表理解。tuple()可以很好地处理生成器表达式

相关问题 更多 >

    热门问题