Сортировка массива через конвертацию числа

Необходимо отсортировать массив чисел который вводится пользователем по возрастанию по первой цифре числа. Пример: не отсортированный массив 6, 75, 123, 999 . Отсортированный массив 123, 6, 75, 999 . На ум приходит только решению, через конвертацию числа в строку, и нахождению первого элемента строки, и посредством сравнения обратно сконвертированого числа с каждым элементом массива сделать сортировку. Как решить данную задачу альтернативным методом ?


Ответы (2 шт):

Автор решения: Mattern

Действительно, без перевода в строку здесь никак, можно сделать это, например, так:

a = [6, 75, 123, 999]
a.sort(key=lambda x: str(x)[0])
print(a)

[123, 6, 75, 999]
→ Ссылка
Автор решения: Alioshca Z

Можно всё без перевода в строку. Матушка-рекурсия и математика.

my_list = [6, 75, 999, 123]

def renum(n):
    if n > 9:
        return renum(n//10)
    else:
        return n

my_list.sort(key=lambda x: renum(x))

print(my_list)
→ Ссылка