![](/img/trans.png)
[英]Adding a value to the first index of a list of array by using a list comprehension Python
[英]adding value limitations on list comprehension
我試圖找到一種方法來獲取兩個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
這是我能用清單理解干凈地做些什么嗎? 還是有更好的方法?
這是一種方式
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()
適用於生成器表達式
當然,只要結合你所擁有的:
tuple(max(0, min(tupleone[x] - tupletwo[x], 255)) for x in range(3))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.