Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2016 16:58:25

worldmind
Зарегистрирован: 2016-12-20
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

Я перловик, интересуюсь питоном (третьим) и обычно в питоне всё сделано более логично, аккуратно и продумано, однако столкнулся с тем, что для того чтобы перевернуть строку есть две уродливые конструкции

 'abc'[::-1]
и
 ''.join(reversed('abc'))
Читаемость по сравнению с единственно логичным
 'abc'.reverse()
жуткая, да ещё и говорят что первый вариант более производительный, но с моей точки зрения он и более уродливый хоть и короткий, может кто знает почему в питоне не алиаса reverse для
 [::-1]
?

UPD: как терпимый вариант можно делать так
 >>> str = 'asdfghjkl'
>>> REVERSE = slice(None, None, -1)
>>> str[REVERSE]
'lkjhgfdsa'

Отредактировано worldmind (Янв. 15, 2017 16:06:14)

Офлайн

#2 Дек. 20, 2016 17:04:24

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

Ясно почему. Что sorted, что reversed могут принимать не только строки

Офлайн

#3 Дек. 20, 2016 18:53:33

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

Хотя бы потому что реверсить строки в реальных задачах не приходиться. А это означает что на 99.9% не нужно.
Далее, сама запись

 value[::-1]
это не штука которая специально реверсит строку. Это срезы (!) любого объекта (!) поддерживающего специальный метод __reversed__ или являющегося последовательностью. Как Вам идея реверснуть экземпляр класса ? Да легко.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Дек. 20, 2016 18:55:07)

Офлайн

#4 Янв. 2, 2017 15:19:36

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

 st = 'abc'
print('Source string: ' + st)
print('Reversed string: ' + st[::-1])

Отредактировано _nemo_ (Янв. 2, 2017 15:20:37)

Офлайн

#5 Янв. 2, 2017 16:42:06

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

_nemo_
ну и в чем смысл вашего поста ?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Янв. 2, 2017 18:43:43

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

JOHN_16
Смысл поста в том, что

 st[::-1]
уже reversed string,
а reverse reversed string непременно будет st

Отредактировано _nemo_ (Янв. 2, 2017 18:44:33)

Офлайн

#7 Янв. 2, 2017 18:59:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

_nemo_
А вы вообще читали стартовый пост и ответы на него?



Офлайн

#8 Янв. 2, 2017 19:03:45

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

_nemo_
Вот этот:
'''
может кто знает почему в питоне не алиаса reverse для

 [::-1]
'''
Да, читал.

Офлайн

#9 Янв. 2, 2017 19:14:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

_nemo_
и вы ответили ТСу, почему в питоне нет специального метода для реверса строки? В каком месте?



Офлайн

#10 Янв. 2, 2017 19:30:37

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Почему для [::-1] нет алиаса reverse?

FishHook

признаюсь полностью не понял вопроса… теперь понял…
Это вопрос тогда не ко мне а разработчикам питона.
Там помимо функции reverse еще много чего нет…
Не спрашивайте почему, это военная тайна, вам знать
не положено

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version