Учитывая, что эта операция является линейной, вы не должны использовать ее в «горячей» части вашего кода, где важна производительность. В холодной части используйте list @ [element]
, как предложено Adi
. В горячей части, перепишите свой алгоритм, так что вам не нужно это делать.
Типичный способ сделать это - накапливать результаты в порядке обратный во время обработки, а затем переворачивать весь накопленный список перед возвратом результата. Если у вас есть N этапов обработки (каждый из которых добавляет элемент в список), вы поэтому амортизируете линейную стоимость реверса по N элементам, поэтому вы сохраняете линейный алгоритм вместо квадратичного.
В некоторых случаях другой метод, который работает, заключается в обработке ваших элементов в обратном порядке, так что накопленные результаты оказываются в правильном порядке без явного шага обращения.