Не понимаю почему не отсортировывает с ключом х**2-2*х
В задаче нужно сделать, чтобы вводили список, и на выходе получали отсортированный список по убыванию с ключом х**2-2*х.
Мой код, который не отсортировывает правильно:
n=int(input())
X=[]
for i in range(0,n):
a=int(input())
X.append(a)
def sort(x):
return (x**2-2*x)
sorted_X=sorted(X, key=sort)
Y=map(str,sorted_X)
Z=" ".join(Y)
print(Z)
Числа для ввода: 5 0 10 4 7 -5
В выводе должно быть: 10, 7, -5, 4, 0
У меня выводит: -5, 7, 4, 10, 0
Ответы (3 шт):
Автор решения: Максим Макаров
→ Ссылка
Нашел ошибку, исправил в коде в загруженном, в строке после sorted в значение Y написал Y=map(str,X)
Автор решения: MBo
→ Ссылка
Меняем знак ключа, чтобы было по убыванию:
sorted_X=sorted(X, key=lambda x: -x**2+2*x)
print(sorted_X)
>>>[10, 7, -5, 4, 0]
Автор решения: CrazyElf
→ Ссылка
У функции sorted есть специальный ключ reverse, который можно выставить в True, чтобы сортировать в убывающем порядке.
sorted_X = sorted(X, key=sort, reverse=True)