Когда вы говорите об эффективности, вы должны указать, с какой точки зрения? Память, время выполнения, реализация и т. Д.
Что касается времени выполнения, обратная индексация определенно быстрее, потому что когда вы используете join
плюс reversed
, вы вызываете две функции, каждая из которых имеет свои недостатки (приостановка и возобновление фрейма функции и т. Д.) По сравнению с простой индексации. Но если вы хотите перебрать символ один за другим для любой цели, и память является проблемой (в основном, когда строка большая), вы можете использовать reversed
, потому что он возвращает объект итератора.
In [2]: s = "example"
In [4]: r = reversed(s)
In [5]: next(r) # e.g. You can access to the characters using `next()`
Out[5]: 'e'
Таким образом, вывод заключается в том, что вы должны выбрать метод исходя из своих потребностей, и на самом деле именно поэтому в Python есть несколько способов решения одной конкретной задачи.