Нарезка обратного шага Python

Конкретный пример моего вопроса: "Как я могу получить '3210' в этом примере?"


>>> foo = '0123456'
>>> foo[0:4]
'0123'
>>> foo[::-1]
'6543210'
>>> foo[4:0:-1] # I was shooting for '3210' but made a fencepost error, that's fine, but...
'4321'
>>> foo[3:-1:-1] # How can I get '3210'?
''
>>> foo[3:0:-1]
'321'

Кажется странным, что я могу написать foo [4: 0: -1], foo [5: 1: -1] и т. Д. И получить то, что ожидал, но нет способа записать фрагмент так, чтобы я get '3210'.

Временный способ сделать это будет foo [0: 4] [:: - 1], но это создает в процессе два строковых объекта. Я буду выполнять эту операцию буквально миллиарды раз, поэтому каждая строковая операция стоит дорого.

Я, должно быть, упускаю что-то глупое и простое. Спасибо за вашу помощь!

30
задан eblume 27 April 2011 в 00:50
поделиться