Создает строку из списка строк.
Синтаксис:
Параметры:
Возвращаемое значение:
Описание:
Метод
str.join()
возвращает строку, которая является конкатенацией (объединением) всех строк-элементов итерируемого объекта
iterable
.
В итоговой строке элементы объединяются между собой при помощи строки-разделителя str
.
Примеры создания строки из списка строк.
>>> 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)
Как добавить/соединить существующую строку со списком строк.
# начальная строка
>>> 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)
# Состав корзины покупателя:
# - картошка
# - морковь
# - лук
# - чеснок
# - свекла