В Python 3, каковы различия между (стабильно) обратной сортировкой и (стабильно) сортировкой, а затем реверсирование результата? [Дубликат]

У меня есть другая перспектива ответить на это.

При работе на разных уровнях, например, в приложении MVC, контроллеру нужны службы для вызова бизнес-операций. В таких сценариях контейнер инжекции зависимостей может использоваться для инициализации служб, чтобы исключить исключение NullReferenceException. Это означает, что вам не нужно беспокоиться о проверке нулевого значения и просто вызвать службы с контроллера, как будто они всегда будут доступны (и инициализированы) как одиночный или прототип.

public class MyController
{
    private ServiceA serviceA;
    private ServiceB serviceB;

    public MyController(ServiceA serviceA, ServiceB serviceB)
    {
        this.serviceA = serviceA;
        this.serviceB = serviceB;
    }

    public void MyMethod()
    {
        // We don't need to check null because the dependency injection container 
        // injects it, provided you took care of bootstrapping it.
        var someObject = serviceA.DoThis();
    }
}
20
задан Gladius 2 April 2012 в 01:46
поделиться

3 ответа

Вы набрали ровно разницу. Поскольку Timsort устойчив, сортировка по обратному по отношению к обратному сортировке приведет к остальным несортированным элементам в обратных порядках.

>>> s = ((2, 3, 4), (1, 2, 3), (1, 2, 2))
>>> sorted(s, key=operator.itemgetter(0, 1), reverse=True)
[(2, 3, 4), (1, 2, 3), (1, 2, 2)]
>>> list(reversed(sorted(s, key=operator.itemgetter(0, 1))))
[(2, 3, 4), (1, 2, 2), (1, 2, 3)]
18
ответ дан Ignacio Vazquez-Abrams 25 August 2018 в 05:49
поделиться

Интересным инвариантом является: list(reversed(sorted(reversed(data)))) == sorted(data, reverse=True).

. Другие респонденты верны, что разница имеет отношение к стабильности сортировки, которая сохраняет порядок равных ключей. А также sorted () возвращает список, а reverseed () возвращает итератор.

1
ответ дан Raymond Hettinger 25 August 2018 в 05:49
поделиться

Вы получаете список для sorted(), но reversed() возвращает итератор

1
ответ дан RBT 25 August 2018 в 05:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: