当光标悬停在tkinter画布圆形矩形按钮上时,我已经使用以下方法调整了颜色:
def shade_rgb(rgb):
""" Adjust shade of rgb by 25% (value 64 out of 256)
:param rgb: tuple of red, green, blue integers 0 to 255
:returns: tuple of red, green, blue integers 0 to 255
"""
converted = []
for i in rgb:
if i < 128:
i = i + 64
else:
i = i - 64
converted.append(i)
return tuple(converted)
我看过列表理解和元组生成器的代码,我相信它们会大大缩短代码。然而,我可以";理解";如何做到这一点?
回复评论
";你被困在哪里了">
我在发电机上的尝试是这样的:
return tuple(i = i + 64 if i<128 else i = i - 64 for i in rgb)
通常在Python中我会使用:
i = i + 64
或:
i += 64
但很明显,在发电机内,你进入了另一个宇宙,物理规则变为:
i + 64
您可以将生成器表达式传递给元组构造函数。
return tuple(i+64 if i<128 else i-64 for i in rgb)
元组理解没有直接的语法,可能是因为元组通常包含异构数据,而列表通常包含同构数据。
return (i + 64 if i < 128
else i - 64
for i in rgb)
你被困在哪里了?
试试这个:
return tuple([i+64 if i < 128 else i - 64 for i in rgb])