5 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用列表推導(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貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
你不需要元組。嘗試這個(gè):
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貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
當(dāng)您分配給x您時(shí),您將用新值替換整個(gè)變量,而不僅僅是迭代的當(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貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以使用列表推導(dǎo)來遍歷r,g和b. 同時(shí)創(chuàng)建一個(gè)測(cè)試條件的新列表。
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貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
您可以max(0, min(255, x))
用于列表元素x
。然后對(duì)于整個(gè)列表,您可以使用列表推導(dǎo):
x = [max(0, min(255, y)) for y in x]
或者,您可以使用三元運(yùn)算符:
x = [255 if y > 255 else (0 if y < 0 else y) for y in x]
添加回答
舉報(bào)