Перейти к содержимому

Как склеить строки в python

  • автор:

Объединить строки в Python

В этом посте мы обсудим, как объединять строки в Python, т. е. добавлять строку к другой строке.

1. Использование += оператор

Простой способ выполнить конкатенацию строк в Python — использовать + или же += оператор. Вот как будет выглядеть код:

if __name__ == ‘__main__’ :
print ( s ) # Hello World

2. Использование __add__ функция

За кулисами + оператор звонит на __add__ функция. Это означает x.__add__(y) идентичен x + y .

if __name__ == ‘__main__’ :
s = s . __add__ ( x )
s = s . __add__ ( y )
print ( s ) # Hello World

3. Использование списка

Другой вариант — добавить все элементы в список, а затем использовать str.join для объединения всех элементов обратно в одну строку.

if __name__ == ‘__main__’ :
s = » . join ( [ x , y , z ] )
print ( s ) # Hello World

4. Использование кортежа

Кроме того, вы можете поместить свои строки в кортеж и передать кортеж в str.join функция для получения одной строки.

if __name__ == ‘__main__’ :
s = » . join ( ( x , y , z ) )
print ( s ) # Hello World

Это все, что касается объединения строк в Python.

Оценить этот пост

Средний рейтинг 5 /5. Подсчет голосов: 11

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Подписывайся
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации

  • Все проблемы
  • Практика DSA
  • 100 самых популярных задач
  • 50 лучших классических задач
  • Лучшие алгоритмы
  • Компилятор С/С++
  • Компилятор Java
  • Компилятор Python
  • Компилятор JavaScript
  • компилятор PHP
  • Компилятор C#
  • Свяжитесь с нами
  • Политика конфиденциальности
  • условия обслуживания
  • Подпишитесь на новые публикации

Techie Delight © 2023 Все права защищены.

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Как быстро конкатенировать строки в Python

Обложка поста Как быстро конкатенировать строки в Python

На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

Как вы, наверное, знаете один из принципов в Python: “Должен быть один и только один способ сделать что-либо”. Можете убедиться в этом, выполнив в в интерпретаторе import this (вы увидите Дзен Python). Несмотря на это, иногда вам всё равно приходится выбирать между несколькими способами сделать что-то, и не всегда очевидно, какой способ лучше. Недавно один студент спросил меня, какой способ конкатенации строк в Python самый эффективный. Я решил поделиться результатом своего маленького исследования и с вами.

Для начала вспомним, какие способы объединения строк предоставляет нам Python. Во-первых, это оператор + :

>> 'abc' + 'def' 'abcdef' 

Также мы можем использовать оператор % , который, конечно, может использоваться не только для соединения строк, но и для этого тоже:

>>> "%s%s" % ('abc', 'def') 'abcdef' 

Есть и ещё более современная замена % — это str.format :

>>> ''.format('abc', 'def') 'abcdef' 

Так же, как и % , этот метод гораздо мощнее, чем обычный + , но тем не менее строки соединяют и с его помощью.

Как же мы будем замерять время? В Jupyter (так же известном, как IPython) мы можем использовать магическую команду timeit для запуска кода. Для запуска я подготовил четыре функции, каждая из которых складывает строки разным образом. Исходные строки хранятся в глобальных переменных ( x и y ), а локальная (для каждой функции) переменная z содержит результат сложения. Затем функция возвращает результат.

def concat1(): z = x + y return z def concat2(): z = "%s%s" % (x, y) return z def concat3(): z = "<><>".format(x, y) return z def concat4(): z = "".format(x, y) return z 

Конечно concat3() и concat4() фактически одинаковы, но я решил проверить и то, влияет указание порядка строк на скорость или нет. Затем я определил наши глобальные переменные:

x = 'abc' y = 'def' 

И запустил наши функции:

%timeit concat1() %timeit concat2() %timeit concat3() %timeit concat4() 

Результат оказался следующим:

  • concat1: 153 наносекунды;
  • concat2: 275 наносекунд;
  • concat3: 398 наносекунд;
  • concat4: 393 наносекунды.

Здесь мы можем видеть, что concat1() , который использует оператор + , выполняется гораздо быстрее остальных. Это немного расстроило меня, потому что мне очень нравится str.format , однако теперь в задачах, которые требуют огромного количества обработки строк, от него придётся отказаться.

Возможно, такие результаты могут быть связаны с тем, что короткие строки не создаются в Python каждый раз снова, а хранятся в специальной таблице? Давайте попробуем изменить наши глобальные переменные следующим образом:

x = 'abc' * 10000 y = 'def' * 10000 

Теперь мы получим следующие результаты:

  • concat1: 2.64 микросекунды;
  • concat2: 3.09 микросекунды;
  • concat3: 3.33 микросекунды;
  • concat4: 3.48 микросекунды;

Да, каждый из методов теперь работал гораздо дольше, однако общий результат не изменился — оператор + по прежнему лидирует. Заметим так же, что разница во времени между третьим и четвёртым методом, как и ожидалось, пренебрежимо мала.

После этого я попробовал не объявлять переменные глобальными, а задавать их в теле метода, но на результаты это всё равно не повлияло. Разумеется, можно проводить ещё много разных опытов (например, попробовать сложить больше, чем две строки), однако этого уже достаточно, чтобы иметь примерное представление о скоростях работы различных способов сложения строк в языке Python.

Следите за новыми постами по любимым темам

Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.

Объединить строки Python

Для того, чтобы объединить две и более строки можно применить оператор + . Смотрите пример:

txt1 = ‘ab’ txt2 = ‘cd’ res = txt1 + txt2 print(res)

Результат выполнения кода:

С помощью метода join

Объединить строки также возможно посредством метода join . При объединении двух строк методом join первая строка выступает разделителем для второй. Смотрите пример:

txt1 = ‘ab’ txt2 = ‘cd’ res = txt1.join(txt2) print(res)

Результат выполнения кода:

Смотрите также

  • метод join ,
    который возвращает строку из списка строк

Конкатенация строк Python

Конкатенация строк в Python — это операция соединения двух или более строк в одну. В результате конкатенации создается новая строка, которая содержит все символы из исходных, расположенные в нужном порядке. Пример: если у нас есть две строки Hello и world! , то конкатенация этих строк даст новую строку Hello world! В Python, как и во многих других языках программирования, для конкатенации строк используются разные способы. Рассмотрим их все.

Оператор +

Возьмем классический пример:

string1 = "Hello"
string2 = "world!"
string3 = string1 + ", " + string2
print(string3)

Hello, world!

Здесь мы присвоили строке string1 значение Hello , а строке string2 значение world! , а затем сложили их, добавив запятую с пробелом в середине, и вывели на экран новую строку.

Приведем еще пару примеров конкатенации с помощью оператора + . Вот конкатенация трех строк:

string1 = "I"
string2 = "love"
string3 = "Python"
result = string1 + " " + string2 + " " + string3
print(result)

I love Python

Как видим, никаких отличий. И такой пример:

first_name = "Monty"
last_name = "Python"
result = "My name is " + first_name + " " + last_name
print(result)

My name is Monty Python

Обратите внимание на то, что в обоих примерах мы добавили пробелы между словами, чтобы получить правильный вывод с точки зрения печати. Так рекомендуется делать и в других случаях.

Метод join()

В примерах выше мы использовали оператор + для соединения двух или более строк. Но также конкатенация строк в Python 3 может быть выполнена и при помощи метода join() . Вот наш первый пример, записанный таким способом:

strings = ["Hello", "world!"]
string3 = ", ".join(strings)
print(string3)

И в выводе мы увидим всё тот же Hello, world! .

А вот и два других примера, переписанные с использованием метода join() :

strings = ["I", "love", "Python"]
result = " ".join(strings)
print(result)

I love Python
first_name = "Monty"
last_name = "Python"
strings = ["My name is", first_name, last_name]
result = " ".join(strings)
print(result)

My name is Monty Python

Обратите внимание, что в обоих примерах мы создали список строк и затем использовали метод join() для их соединения в одну строку. В первом примере мы только добавили пробел для разделения слов, а во втором еще и задействовали переменные в списке.

Конкатенация строки и числа в Python

Если мы просто попытаемся соединить строку и число, то получим ошибку:

age = 28
message = "I am " + age + " years old."
print(message)

Traceback (most recent call last):
File "C:/Python/Python38/concat1.py", line 2, in
message = "I am " + age + " years old."
TypeError: can only concatenate str (not "int") to str

Так бывает, если используется неправильный синтаксис. В данном случае код вызовет ошибку TypeError , потому что мы пытаемся соединить строку с числом без преобразования числа также в строку.

Конкатенация строки и числа через str()

Чтобы исправить эту ошибку, мы можем использовать функцию str() для преобразования числа в строку. Вот пример правильной конкатенации строки и числа:

age = 28
message = "I am " + str(age) + " years old."
print(message)

I am 28 years old.

Мы преобразовали число, заключенное в переменную age , в строку с помощью функции str() , и интерпретатор выдал нам нужный результат.

Конкатенация строки и числа через format()

То же самое можно сделать, и используя метод format() :

age = 28
message = "I am <> years old.".format(age)
print(message)

I am 28 years old.

Этот метод работает так же, как и функция str() , различается лишь синтаксис.

Конкатенация строки и числа через f-строки

И еще один способ вывести такой же результат: задействовать новинку версии 3 — f-строки :

age = 28
message = f"I am years old."
print(message)

I am 28 years old.

f-строки ( formatted string literals ) в Python действуют так же, как и метод str.format() , но предоставляют более удобный и лаконичный способ переноса значений в строку. С помощью f-строк мы можем вставлять значения переменных прямо внутрь строки, используя фигурные скобки <> и указывая имя переменной внутри этих скобок. Вот еще несколько примеров конкатенации строк и чисел с использованием f-строк :

name = "Monty"
age = 35
print(f"My name is and I am years old.")

My name is Monty and I am 35 years old.
salary = 100000
tax_rate = 0.25
taxes = salary * tax_rate
print(f"My salary is and my taxes are .")

My salary is 100000 and my taxes are 25000.0.

Как видите, мы можем вставлять значения переменных внутрь строки, используя фигурные скобки, и Python автоматически подставляет значения переменных в эти места при выполнении программы. Обратите внимание, что f-строки поддерживают также различные форматы вывода, которые можно указать внутри фигурных скобок. Например, можно указать количество знаков после запятой для чисел с плавающей запятой (или точкой). Это делает f-строки ещё более мощными средствами форматирования.

H3: Заключение

На примере конкатенации мы в очередной раз убедились, насколько гибким является Python, ведь соединять строки здесь можно разными методами. И даже соединение строки с числом путем преобразования числового значения в строчное можно выполнить как минимум тремя способами: просто выберите понравившийся.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *