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

Метод str.join() в Python, объединяет список строк

Создает строку из списка строк

Синтаксис:

str.join(iterable)

Параметры:

Возвращаемое значение:

Описание:

Метод str.join() возвращает строку, которая является конкатенацией (объединением) всех строк-элементов итерируемого объекта iterable.

В итоговой строке элементы объединяются между собой при помощи строки-разделителя str.

Если в последовательности iterable есть какие-либо НЕ строковые значения, включая байтовые строки bytes, то поднимается исключение TypeError.

Примеры создания строки из списка строк.

>>> x = ['возвращает',  'строку',  'которая', 
         'является', 'конкатенацией']

# объединение списка строк с разделителем "пробел"
>>> line =  ' '.join(x)
>>> line
# 'возвращает строку которая является конкатенацией'

# в качестве разделителя символ новой строки '\n'
>>> line = '\n'.join(x)
>>> line
# 'возвращает\nстроку\nкоторая\nявляется\nконкатенацией'
>>> print(line)
# возвращает
# строку
# которая
# является
# конкатенацией

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

В примере будем использовать словарь из двух списков - error (для ошибок) и message (для итогового сообщения):

# здесь поступают какие то данные, пускай 
# num - должно быть целым числом
# name - имя, которое должно быть не менее 3-х букв

content = {'message': [], 'error': []}
# далее идет код проверок например:
if num:
    if type(num) is int:
        content['message'].append(f'  - Введено число {num}')
    else:
        content['error'].append(f'  - {num} - это не целое число')
else:
    content['error'].append('  - Вы не ввели число')

if name:
    if len(name) > 3:
        content['message'].append(f'  - Введено имя: {name}')
    else:
        content['error'].append('  - Имя не должно быть короче 3-х букв')
else:
    content['error'].append('  - Вы не ввели имя')

# в конце кода итоговые проверки и вывод сообщения
if content['error']:
    # если есть какие-то ошибки
    content['error'].insert(0, 'При вводе данных возникли ошибки:\n')
    result_message = '\n'.join(content['error'])
else:
    # если все хорошо.
    content['message'].insert(0, 'Результаты ввода данных:\n')
    result_message = '\n'.join(content['message'])

print(result_message)

Как добавить/соединить существующую строку со списком строк.

Очень просто. Необходимо существующую строку добавить в начало списка методом изменяющихся последовательностей sequence.insert(i, x), а затем применить метод str.join().

# начальная строка
>>> line = 'Состав корзины покупателя:'
# список строк, которые нужно добавить
>>> lst_line = ['- картошка', '- морковь', '- лук', '- чеснок', '- свекла']
# вставляем начальную строку по индексу 0 в список
>>> lst_line.insert(0, line)
# объединяем список строк по разделителю '\n'
>>> rez = '\n'.join(lst_line)
>>> print(rez)
# Состав корзины покупателя:
# - картошка
# - морковь
# - лук
# - чеснок
# - свекла

Конечно данную операцию можно осуществить другим способом, при помощи оператора присваивания на месте +=. Но такой код будет работать значительно дольше и потреблять больше памяти, особенно это заметно, когда строк очень много.

Это происходит потому, что строка str - это неизменяемый тип и при конкатации (сложении строк) КАЖДЫЙ РАЗ образуется НОВАЯ строка, на что тратятся ресурсы системы:

>>> line = 'Состав корзины покупателя:'
# список строк, которые нужно добавить
>>> lst_line = ['- картошка', '- морковь', '- лук', '- чеснок', '- свекла']
>>> for add_line in lst_line:
...     line += f'\n{add_line}'
...
print(line)
# Состав корзины покупателя:
# - картошка
# - морковь
# - лук
# - чеснок
# - свекла