#python #string
#питон #строка
Вопрос:
Разве нет более простого способа инвертировать строку, подобную EURUSD
to USDEUR
, вместо использования этого кода:
new_str = old_str[-3:] old_str[:3]
Комментарии:
1. нет, если у вас нет контроля над тем, откуда берется строка
2. Как вы думаете, какая сложность есть в этом коде, которую можно удалить?
Ответ №1:
Нет ничего короче того, что вы делаете. Я подозреваю, что вы думали о трюке для изменения строки, где s[::-1]
она меняет ее. Здесь вы меняете местами фрагменты длиной 3. Ни одна операция среза не может этого сделать.
Если вы часто делаете подобные вещи, в том числе для более длинных строк, может помочь написание функции:
def reverse_chunks(s,k):
"""reverses the order of k-sized chunks in s"""
return ''.join([s[i:i k] for i in range(0,len(s),k)][::-1])
Тогда, например:
>>> reverse_chunks('EURUSD',3)
'USDEUR'
Основываясь на этом, вы, конечно, могли бы написать более специализированный:
def invert(s):
return reverse_chunks(s,len(s)//2)