При отладке программы на Python я недавно обнаружил, что функция Python itertools # groupby () требует сортировки входной коллекции, поскольку она группирует только идентичные элементы, встречающиеся в последовательности:
Как правило, итерируемое уже должно быть отсортировано по той же ключевой функции.
Операция groupby () аналогична фильтру uniq в Unix
В обоих случаях, uniq
и Python groupby()
, мне интересно, какой вариант использования может быть для их применения без сортировки.
Ясно, что сортировка может быть дорогой, и ее следует по возможности избегать. Однако, если на практике сортировка, по-видимому, неизбежна, то почему разработчики Python решили не устанавливать ее по умолчанию в groupby()
? Это, кажется, вызывает много путаницы среди пользователей функции.
Я отметил, что это дизайнерское решение не кажется универсальным. Такие языки, как Scala, по-видимому, неявно сортируют коллекции в своих groupBy()
функциях.
Следовательно, у меня вопрос: каковы варианты использования, которые привели к принятию решения о неявной сортировке в uniq и Python groupby ()?