что значит "боль по питонячьи"? in-place reverse выполняется за O(N), да это обход всех элементов списка, но это делается на уровне реализации списка, а он реализован на Си, то есть и sort и reverse работают достаточно быстро (гораздо быстрее если бы ты делал это в цикле в самом питоне).
a = list(range(100000000))
%time a.reverse()
Wall time: 64.9 ms
То есть временем на reverse при сортировке можно пренебречь в большинстве случаев.