Мне нужно пересечь список назад. Я читал о xrange() и reverse(). Какой из них дороже?reverseed() vs. xrange()
ответ
Вы можете использовать библиотеку timeit Python для таких вещей. Вы не говорите, какой у вас список, поэтому я принимаю простой список строк. Сначала я создать список 100 элементов длиной, а затем время как:
my_list = ["hello"] * 100
def v1():
for x in my_list[::-1]:
pass
def v2():
for x in reversed(my_list):
pass
print timeit.timeit(v1)
print timeit.timeit(v2)
Это дает следующий результат:
2.78170533583
2.13084949985
Как вы можете видеть, в этом примере reversed()
немного быстрее.
Не использовать, если создание списка находится внутри измерения. (В противном случае +1) – kay
Действительно, хорошо заметили. –
Новое в этом, довольно ясно, и geez, узнал о timeit. Благодаря! Я действительно работаю с простыми списками. И в качестве backend-реализации мне нужно было знать, какие издержки стоят меньше времени. Итак, довольно ясно. – GJntN
xrange()
производит последовательность чисел. Вы можете использовать эти числа в качестве индексов списка, если хотите, или можете использовать их для чего-либо, где вы хотите эти числа.
for i in xrange(len(l)-1, -1, -1):
item = l[i]
print item
reversed()
производит детали из чего-то, что имеет длину и может быть проиндексированы.
for item in reversed(l):
print item
Я хотел бы использовать reversed()
, потому что это делает ваш код короче, проще, яснее и проще писать правильно.
. Вы также можете использовать генератор 'для элемента в (l [i] для i в xrange (len (l) -1, -1, -1)): ... '. (Предостережение: может заставить других людей ненавидеть вас, когда они должны прочитать код.) – kay
Действительно ... вы могли бы поставить свой генератор в функцию и называть его reversed(). :) – dsh
- 1. Swift NSData getBytes reverseed
- 2. highcharts datalabel text reverseed
- 3. C# reverseed ushort
- 4. MySQL Query for reverseed
- 5. canvas.drawtext arabic reverseed
- 6. Postgis latitude/longitude readed reverseed
- 7. Python xrange отсчет сделать
- 8. Python xrange with float
- 9. StopIteration после определения xrange
- 10. unresolved imprort: xrange
- 11. Django содержит None (or reverseed contains)
- 12. Trouble printing reverseed linked list (java)
- 13. Eclipse on mac delete reverseed без fn
- 14. Scala класс с SortedMap и "reverseed" SortedMap
- 15. xrange versus itertools.count Python 2.7
- 16. Python: for loops and xrange()
- 17. Python for cycle xrange increment
- 18. Добавить произвольный элемент в xrange()?
- 19. Правильно установить xrange для времени
- 20. автоматически устанавливает xrange в gnuplot
- 21. Gnuplot xrange действительно не диапазон?
- 22. Доступ к внутренней структуре xrange
- 23. Name «xrange» не определен в Python 3
- 24. странное поведение xrange() в Python 2
- 25. Есть ли функция, подобная xrange в Lua?
- 26. gnuplot xrange не принимается должным образом?
- 27. Рекомендации по использованию Python xrange yield
- 28. Как сделать динамику rp и xrange?
- 29. Установка xrange в gnuplot, производящий странный результат
- 30. GNUplot Autoscale set xrange равно yrange
'xrange' и' reverseed' делают совершенно разные вещи? – muddyfish
Вы спрашиваете, следует ли использовать параметр «xrange (n, -1, -1)», зависящий от одного ошибки, или он выполняется так же быстро »(xrange (n + 1))? Согласно '% timeit', обе они одинаково быстры. –
Я указываю вам документацию для ['__reversed__'] (https://docs.python.org/2/reference/datamodel.html#object.__reversed__)« Если метод '__reversed __()' не указан, 'built-in' reverse() 'будет возвращаться к использованию протокола последовательности (' __len __() 'и' __getitem __() '). Объекты, поддерживающие протокол последовательности, должны предоставлять только' __reversed __() ', если они могут обеспечить реализацию который более эффективен, чем тот, который предоставляется «reverseed()». – NightShadeQueen