Ситуация довольно необычная: не могу врубиться в идеологию сортировки на этом, мягко скажем, странном языке. Конкретно говорю о sorted(), еще конкретнее - о custom функции сортировки в этом sorted(...,key=myfunc). То есть на вопрос "как" мне ответили, меня интересует "зачем так?"
Подробнее.
В привычных мне языках программирования функция сортировки возвращает троичный флаг, если так можно выразиться: -1 or 0 or 1. Фсё! Просто и понятно. Саму функцию языка (не мою! стандартную!) не интересует структура моих данных: только флаг. Но в Python 3 предлагается возвращать значение, которое и будет сортироваться.
Простой пример: мне надо отсортировать даты, состоящие из дня, месяца и года. Я понимаю, что пример притянут за уши, чисто для пояснения идеи. Мне предлагается вернуть что-то такое, что и будет отсортировано, например, в терминах Perl,
Code: Select all
return sprintf("%s%s%s",$year,$month,$day)
Если же объекты более сложные, то мне снова придется генерить некие промежуточные строки (или числа) только для сортировки.
Вот объясните мне, ради бога, зачем это надо было делать? Что этим вообще достигли как в идедологическом, так и в техническом плане?
Или я чего-то не догоняю? В общем, заранее благодарен.
P.S. Я уже не задаю вопрос, какому идиоту пришло в голову вместо списка ключей хэша (словаря) возвращать iterator. Что этим достигли? Ничего более разумного, чем экономия памяти, в голову не приходит.
P.P.S. Нэнавижю!