Сортировка массива через конвертацию числа
Необходимо отсортировать массив чисел который вводится пользователем по возрастанию по первой цифре числа. Пример: не отсортированный массив 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)