В чем разница между обратным методом и обратным в python? [Дубликат]

[D5] Конечно. Если вы используете HSSF, вызовите оценщикAllFormulaCells :

 . 

Если вы используете HSSF, HSSFFormulaEvaluator.evaluateAllFormulaCells (hssfWorkbook)

Если вы используете XSSF, вызовите оценщикAllFormulaCells :

  XSSFFormulaEvaluator.evaluateAllFormulaCells (xssfWorkbook)   

Более подробная информация доступна на веб-сайте poi

12
задан rectangletangle 24 July 2011 в 23:00
поделиться

4 ответа

Зависит от того, хотите ли вы перевернуть список на месте (т. е. изменить список) или нет. Никакой другой реальной разницы.

Часто использование reversed приводит к более приятному коду.

9
ответ дан Katriel 17 August 2018 в 09:17
поделиться

Не зная реальной статистики о производительности, _list.reverse() изменяет сам список, тогда как reversed(_list) возвращает итератор, готовый пересечь список в обратном порядке. Это большая разница.

Если это не проблема, object.reverse() кажется мне более читаемым, но, возможно, у вас есть определенные требования к скорости. И если reverse() не принадлежит 80% программного обеспечения, потребляющего ресурсы, я бы не стал беспокоиться (как общее правило).

2
ответ дан elitalon 17 August 2018 в 09:17
поделиться

foo.reverse() фактически меняет элементы в контейнере. reversed() фактически ничего не отменяет, он просто возвращает объект, который можно использовать для итерации по элементам контейнера в обратном порядке. Если это то, что вам нужно, оно часто быстрее, чем наоборот.

26
ответ дан kindall 17 August 2018 в 09:17
поделиться

Кажется, что есть большая разница. Я действительно думал, что все наоборот. Почему переупорядочивание значений в списке происходит быстрее, чем создание нового из итератора?

from decorators import bench

_list = range(10 ** 6)

@ bench
def foo():
  list(reversed(_list))

@ bench
def bar():
  _list.reverse()

foo()
bar()

print foo.time
print bar.time

0.167278051376 0.0122621059418

8
ответ дан Niklas R 17 August 2018 в 09:17
поделиться
  • 1
    Само распределение памяти не должно занять слишком много времени; IIRC список представляет собой одно смежное распределение (PyObject **). Скорее всего, разница в том, что list(reversed(_list)), хотя конструктор list - это код C, должен проходить через API reverseiterator, а не просто менять указатели в узком цикле C. – Karl Knechtel 25 July 2011 в 07:47
  • 2
    Если им нужно проверить listreverseiterator, то они должны проверить все ... в конечном итоге он становится довольно громоздким и замедляет короткие копии. Кроме того, предполагаемый общий случай для reversed - это когда вы собираетесь итерации в любом случае и не нужно создавать временное. – Karl Knechtel 26 July 2011 в 02:00
  • 3
    Если вы делаете что-то со списками, изображение меняется. Сравнивая for i in reversed(_list):... и _list.reverse();for i in _list:..., прежний немного быстрее. – Weidenrinde 8 August 2013 в 21:56
Другие вопросы по тегам:

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