以下是我用Python编写的应用程序的基本步骤:
这是我的函数,我得到了以下错误:TypeError:'int'object没有属性'getitem,在sorted_by_dist=sorted(colorMap,key=lambda tup:tup[0])
# Sorts a list of colors according to distance from the source color
def sort_colors(colors, source):
colorMap = ()
sortedColors = list()
for i in range(len(colors)):
dist = dist_3d(colors[i], source)
colorMap = colorMap + (dist, colors[i])
sorted_by_dist = sorted(colorMap, key=lambda tup: tup[0])
for (d, c) in sorted_by_dist:
sortedColors.append(c)
return sortedColors
假设我的dist_3d()函数是正确的并返回一个整数值(它是,而且确实是),我做错了什么?我不明白。在
您正在将
colorMap
构建为一个大的一维元组,第一个索引是int
。所以你的lambda
被传递了一个int
,然后你试着去索引它。在您可能需要一个元组列表:
在排序颜色的方法方面,我实际上使用了一个^{} module 来进行排序,加载了我所有的RGB元组。然后我可以向它请求与给定颜色元组最接近的N种颜色:
^{pr2}$错误是因为
tup
是int
。__getitem__
是[]
运算符的名称。在但是,看起来你的函数所做的只是根据与某个参考颜色之间的距离对一系列颜色进行排序。而且,您已经实现了
dist_3d
。既然它能起作用,那么对颜色进行分类就简单多了。按位置排序:或作为新列表:
^{pr2}$我可以告诉你,在你的函数中不需要构建元组和循环之类的东西。在
相关问题 更多 >
编程相关推荐