Как отсортировать список номеров на основе последних двух цифр? - PullRequest
0 голосов
/ 07 марта 2020

Возможно ли это? Я должен отсортировать это без функций сортировки, но я хочу видеть, могу ли я сортировать это на основе последних двух цифр.

1 Ответ

3 голосов
/ 07 марта 2020

Вы можете использовать встроенный метод 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...