5 способов конкатенировать строки в Python 3
Вступление
Всем начинающим кодерам привет!
Конкатенация строк - операция, "склеивающая" несколько строк в одну. Это нельзя назвать особенностью языка, поскольку она присутствует и в PHP, и в Java и много где еще. Для сегодняшнего топа я собрал все способы конкатенации, кроме самых нелепых. Представляю вашему вниманию 5 способов конкатенации строк в Python 3. Сегодня мы рассмотрим варианты множественной конкатенации с применением соединительной строки.
1 способ
Начнем с проверенной классики - оператора сложения для последовательной конкатенации. Думаю, всем известно, как это работает. Недостаток данного способа - в функции должно быть фиксированное число строк. Вы должны точно знать, сколько в списке строк. Я надумал 2 варианта реализации. Первый - с передачей в аргументы функции всех строк через запятую:
Второй - со списком строк в аргументах:
2 способ
Здесь мы используем строковый метод join(), выполняющий конкатенацию с использованием соединительной строки. Это самое короткий и логичный ответ на такой случай:
3 способ
Если нам не известно количество строк в списке, и почему-то мы не используем метод join() (не могу себе представить такую ситуацию), то этот вариант для нас. Он аналогичен работе метода join()
Как это работает? Присваиваем переменной результата значение первой строки из списка и поочередно конкатенируем к нему соединительный символ и следующие в списке строки, пока не закончится список:
4 способ
Давайте вспомним, что с версии Python 2.6 существует метод format(), предоставляющий возможности форматирования строк. Строки из его аргументов подставляются в исходную строку вместо {}. Поставив рядом две и более пары фигурных скобок, можно соединить 2 и более строк. Аргументы могут быть по умолчанию, а могут быть нумерованными или именованными.
Я написал 2 варианта программы с использованием аргументов по умолчанию и нумерованных:
5 способ
А здесь напомню про форматирование строк без метода format(), позаимствованное из C (это я прочитал на форуме). Работает оно точно так же, как и встроенный метод, но не позволяет передавать нумерованные и именованные аргументы. В общем вот:
Примечание: кроме всех указанных способов, я что-то написал... и сам не до конца понял, что я написал. Затем я понял, что накодил чушь. Я проверил, заранее говорю - этот способ самый медленный из всех, поэтому я решил не включать его в основной топ, но все же, вот он:
Статистика быстродействия
Для начала - как измерить время работы программы? Об этом я расскажу в следующей статье. Ну а пока что измерим время работы данного куска кода, где i - одна из шести функций (conc1_2, conc2, conc3, conc4_1, conc4_2, conc5):
И вот результаты:
Как мы можем видеть - встроенный метод join() наилучшим образом подходит для задачи конкатенации строк. Он и работает быстрее всего и имеет простой синтаксис. Ну а хуже всего показало себя форматирование строк. Хоть все это и выглядит лаконично, но в плане скорости уступает стандартному методу более, чем в полтора раза.
Мораль сей басни такова: используйте join() и не парьтесь. Лучше функции, чем "вылизанный" сообществом метод вы, вероятно, не сделаете.
Заключение
Я надеюсь, что вам была интересна данная статья, и вы разобрались в теме. Если хотите меня дополнить - пишите в комментариях. Удачи в мире IT!