Сообщить об ошибке.

Объединение последовательностей в одну.

Синтаксис:

sequence1 + sequence2

Параметры:

Результат:

  • новая последовательность того-же типа.

Описание:

Операция позволяет объединить/сложить последовательности одного типа.

В результате произойдет объединение/конкатенация последовательностей sequence1 и sequence2. Можно еще сказать так, произойдет сложение элементов последовательности sequence1 с элементами последовательности sequence2. Объединение неизменяемых последовательностей всегда приводит к созданию нового объекта.

Если объединяемые последовательности разного типа, то поднимается исключение TypeError.

Примечание 1: Диапазоны range не поддерживают конкатенацию/объединение последовательностей, т. к. последовательности элементов в них следуют определенным шаблонам.

Примечание 2: Для того, что бы объединить множество set с последовательностью или другим множеством, необходимо использовать специально предназначенный для этого метод sets.union(*others).

Примеры конкатации (сложения) последовательностей.

>>> x = [0, 1, 2, 3, 4, 5]
>>> y = [6, 7, 8, 9, 10, 11, 12]
>>> x + y
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> y + x
# [6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5]

>>> x = 'Hello'
>>> y = 'World'
>>> x + y
# 'HelloWorld'
>>> y + x
# 'WorldHello'

# Разные типы последовательностей
y = (1, 5, 9)
>>> x + y
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: must be str, not tuple

Замечания к операции объединение/конкатенация последовательностей:

Объединение неизменяемых последовательностей всегда приводит к созданию нового объекта. Это означает, что построение последовательности путем повторной объединения/конкатенации будет иметь квадратичную стоимость выполнения в общей длине последовательности. Чтобы получить линейную стоимость выполнения, необходимо переключиться на один из следующих вариантов:

  • при объединении объектов str можно построить список строк и в конце использовать str.join() для их объединения, либо писать в io.StringIO и получить его значение по завершении.
  • при объединении объектов bytes можно аналогичным образом использовать bytes.join() или io.BytesIO или можно сделать объединение/конкатенацию на месте с объектом bytearray . Объекты bytearray являются изменяемыми и имеют эффективный механизм перераспределения.
  • при объединении объектов кортежа - объединяйте кортежи в список.