Форум сайта python.su
Привет, помогите с задачей.
Не получается отсортировать.
Задача
Напечатайте входную последовательность натуральных чисел, отсортировав ее по возрастанию сначала единиц, потом десятков, потом сотен и тп.
Входные данные
Целое число 0 < N ≤ 1000. Затем N натуральных чисел, не превышающих 30000, через пробел.
Выходные данные
Числа по возрастанию единиц, при равных единиц - по возрастанию десятков, при равных единицах и десятков - по возрастанию сотен и тп.
Примеры
Вход
5
5 23 3 43 123
Выход
3 23 123 43 5
Офлайн
Как вариант, переводи числа в строки, переворачивай их, сортируй, и переворачивай обратно.
Отредактировано Striver (Март 27, 2020 14:17:58)
Офлайн
>>> s = [5, 23, 3, 43, 123] >>> sorted(s, key=lambda x: (x%10, x%100)) [3, 23, 123, 43, 5]
Офлайн
Striver
Как вариант, переводи числа в строки, переворачивай их, сортируй, и переворачивай обратно.
a = input() e = '' A = [] B = [] for i in range(len(a)): if a[i] != ' ': e +=a[i] if a[i] == ' ': A.append(e) A1 = '' A.append(e) for i in range(len(A)): B.append(A[i][::-1]) B.sort() C = [] for i in range(len(B)): C.append(int(B[i][::-1])) print(C[i], end=' ')
Отредактировано ElmarB (Март 27, 2020 23:26:03)
Офлайн
2 дня тупил, потом сделал сначала перемудрив вот так:
n = int(input()) a = str(input()).split(' ') def comparator(a1, b1): if a1[4] > b1[4] or (a1[4] == b1[4] and a1[3] > b1[3]) or ( a1[4] == b1[4] and a1[3] == b1[3] and a1[2] > b1[2]) or ( a1[4] == b1[4] and a1[3] == b1[3] and a1[2] == b1[2] and a1[1] > b1[1]) or ( a1[4] == b1[4] and a1[3] == b1[3] and a1[2] == b1[2] and a1[1] == b1[1] and a1[0] > b1[0]): return True return False for p1 in range(n - 1): for p2 in range(p1 + 1, n): if comparator((5-len(a[p1]))*'0'+a[p1], (5-len(a[p2]))*'0'+a[p2]): a[p1], a[p2] = a[p2], a[p1] for i in a: print(i, end=' ')
n = int(input()) a = str(input()).split(' ') for p1 in range(n - 1): for p2 in range(p1 + 1, n): if a[p1][::-1] > a[p2][::-1]: a[p1], a[p2] = a[p2], a[p1] for i in a: print(i, end=' ')
Отредактировано OlegFac (Ноя. 22, 2021 22:06:44)
Офлайн
_ = input() print(sorted(input().split(), key = lambda x : x[::-1]))
Офлайн