Я знаю, что есть несколько вопросов, названных так, но я не могу заставить их отвечать на работу.
У меня есть список списков, 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() с теми же параметрами. Но в любом случае функции не получают список в качестве аргумента, а < <26 > . Я понятия не имею, почему это происходит, в основном из С++, это противоречит любой идее функции обратного вызова для меня. Как я могу сортировать эти списки с помощью специальной функции?
Edit Я нашел свою ошибку. В цепочке, которая создает исходный список, одна функция не возвращала ничего, кроме возвращаемого значения. Извините за беспокойство