我有一个用十六进制表示的颜色列表-我需要对它们进行排序以匹配彩虹中的颜色顺序。-我可以对排序顺序进行硬编码-但我觉得有一种更简洁的方法。
在给定十六进制RGB颜色规范的情况下,以下函数返回其HSV颜色:
import colorsys def get_hsv(hexrgb): hexrgb = hexrgb.lstrip("#") # in case you have Web color specs r, g, b = (int(hexrgb[i:i+2], 16) / 255.0 for i in xrange(0,5,2)) return colorsys.rgb_to_hsv(r, g, b)
现在,您可以使用此功能通过色相对RGB十六进制颜色列表进行排序:
color_list = ["000050", "005000", "500000"] # GBR color_list.sort(key=get_hsv) print color_list
通过使用整个HSV元组进行排序,可以确保没有色相(即灰度)的颜色在一致的位置排序,并且具有相同色相但不同的饱和度/值的颜色相对于饱和度更高的颜色/尊贵的同行。
如果颜色因饱和度(强度)或值(亮度)的不同而大相径庭,那么您仍然会感到一团糟,但是没有办法解决。