Вы можете использовать встроенный метод list.sort
или функцию sorted
с функцией key
. Функция lambda n: abs(n) % 100
получает последние две цифры:
>>> nums = [99, 888, 7777, 66666, 555555]
>>> sorted(nums, key=lambda n: abs(n) % 100)
[555555, 66666, 7777, 888, 99]
abs
также работает с отрицательными числами. Если в вашем списке нет отрицательных чисел, вы можете просто написать n % 100
.
Если вы сортируете, используя свой собственный алгоритм, один из способов - следовать " decorate, sort, undecorate " шаблон: создайте список пар, где первый компонент является ключом сортировки, затем напишите свой алгоритм сортировки как обычно, затем извлеките исходные значения, чтобы вернуть отсортированный список.
def sort_by_last_two_digits(nums):
nums = [(abs(n) % 100, n) for n in nums]
# do the sorting normally
return [n for _, n in nums]