最佳答案
我知道有几个问题是这样命名的,但它们似乎对我不起作用。
我有一个列表的列表,50乘以5个元素。我想通过对每个元素应用自定义比较函数对这个列表进行排序。该函数计算元素排序所依据的列表的适应性。我创建了两个函数,比较和适应:
def compare(item1, item2):
return (fitness(item1) < fitness(item2))
还有
def fitness(item):
return item[0]+item[1]+item[2]+item[3]+item[4]
然后我试着给他们打电话:
sorted(mylist, cmp=compare)
或者
sorted(mylist, key=fitness)
或者
sorted(mylist, cmp=compare, key=fitness)
或者
sorted(mylist, cmp=lambda x,y: compare(x,y))
另外,我使用相同的参数尝试了 list.sort ()。但是在任何情况下,函数都不会得到一个列表作为参数,而是一个 None
。我不知道为什么,大部分来自 C + + ,这与我的回调函数的任何想法相矛盾。如何使用自定义函数对列表进行排序?
剪辑 我找到了我的错误。在创建原始列表的链中,一个函数没有返回任何内容,但使用了返回值。抱歉打扰了