5 回答

TA貢獻1906條經(jīng)驗 獲得超3個贊
您可以使用列表推導(dǎo)在一行中執(zhí)行此操作:
def rgb(r,g,b): return [min(255,max(0,n)) for n in (r,g,b)]
輸出:
rgb(265,45,-23)
[255, 45, 0]

TA貢獻1828條經(jīng)驗 獲得超4個贊
你不需要元組。嘗試這個:
def rgb(r, g, b):
x = [r,g,b]
for i in range(len(x)):
if x[i] < 0:
x[i] = 0
if x[i] > 255:
x[i] = 255
return x
# Output: [255, 45, 0]

TA貢獻1795條經(jīng)驗 獲得超7個贊
當(dāng)您分配給x您時,您將用新值替換整個變量,而不僅僅是迭代的當(dāng)前元素。
您可以使用enumerate()一起獲取列表索引和值,并在賦值中使用索引。
for i, val in enumerate(x):
if val < 0:
x[i] = 0
elif val > 255:
x[i] = 255
您還可以使用列表推導(dǎo):
x = [min(255, max(0, val)) for val in x]

TA貢獻2051條經(jīng)驗 獲得超10個贊
您可以使用列表推導(dǎo)來遍歷r,g和b. 同時創(chuàng)建一個測試條件的新列表。
def rgb(r, g, b):
return [0 if x < 0 else 255 if x > 255 else x for x in (r,g,b)]
你可以這樣稱呼它:
print(rgb(265,45,-23))
或喜歡:
x = [265,45,-23]
print(rgb(*x))

TA貢獻1874條經(jīng)驗 獲得超12個贊
您可以max(0, min(255, x))
用于列表元素x
。然后對于整個列表,您可以使用列表推導(dǎo):
x = [max(0, min(255, y)) for y in x]
或者,您可以使用三元運算符:
x = [255 if y > 255 else (0 if y < 0 else y) for y in x]
添加回答
舉報