Метод python string join предназначен для объединения строк. В целом метод join() возвращает объединения элементов итерируемых объектов.
text = ['Python', 'is', 'a', 'fun', 'programming', 'language']
# Объединяем элементы текста с пробелом
print(' '.join(text))
# Результат: Python is a fun programming language
Параметры метода join()
Метод join() принимает в качество входного параметра итерируемые объекты.
- Типы данных Python — Список, Кортеж, Строка, Множества
- Объекты которые мы определяем с помощью метода __iter__(), __getitem()__
Метод join() является довольно гибким инструментом, который позволяет объединять итерируемые объекты. С помощью данного метода, мы можем объединять, и при этом использовать нужный нам разделитель, как это показано в примере выше.
Возвращаемые значения метода join()
- Метод join() возвращает объединенную последовательность, с указанным разделителем
- В случае, если итерируемый объект содержит какие-либо значения, которые нельзя объединить, то мы получаем исключение с ошибкой TypeError.
Пример 1. Работа с методом join()
# .join() со списками
numList = ['1', '2', '3', '4']
separator = ', '
print(separator.join(numList))
# .join() с кортежем
numTuple = ('1', '2', '3', '4')
print(separator.join(numTuple))
s1 = 'abc'
s2 = '123'
# Каждый элемент s2 разделен элементами s1
# '1'+ 'abc'+ '2'+ 'abc'+ '3'
print('s1.join(s2):', s1.join(s2))
# Каждый элемент s1 разделен элементами s2
# 'a'+ '123'+ 'b'+ '123'+ 'b'
print('s2.join(s1):', s2.join(s1))
#Результат
1, 2, 3, 4
1, 2, 3, 4
s1.join(s2): 1abc2abc3
s2.join(s1): a123b123c
Пример 2. Работа метода join() со множествами
# .join() со множествами
test = {'2', '1', '3'}
s = ', '
print(s.join(test))
test = {'Python', 'Java', 'Ruby'}
s = '->->'
print(s.join(test))
#Результат
2, 3, 1
Python->->Ruby->->Java
Множества — это неупорядоченная коллекция последовательных элементов, соответственно при запуска программы, вы можете получить другой результат (случайный порядок).
Пример 3. Метод join() со словарями
# .join() со словрями
test = {'mat': 1, 'that': 2}
s = '->'
# joins только ключи
print(s.join(test))
test = {1: 'mat', 2: 'that'}
s = ', '
# генерируем ошибку, так как ключ не является строкой
print(s.join(test))
#Результат
mat->that
Traceback (most recent call last):
File "...", line 12, in <module>
TypeError: sequence item 0: expected str instance, int found
Чуть выше мы говорили про ошибку TypeError. В данном случае, эта ошибка вызывается из за того, что ключ не является строкой.э