В этом руководстве по Python 3 мы рассмотрим метод join()
, который отвечает за объединение списка в строки. Такой метод поможет вам перевести список в строку очень доступным способом.
Метод принимает итерируемый объект в качестве аргумента, и, поскольку список удовлетворяет этим условиям, то его можно использовать. Кроме того, список должен состоять из строк. Если вы попытаетесь использовать функцию в списке с другим содержимым, результат будет следующим: TypeError: sequence item 0: expected str instance, int found
Давайте рассмотрим пример:
>>> alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', '...']
>>> alphabet_string = ', '.join(alphabet)
>>> print(f'Алфавит: {alphabet_string}')
Результат выполнения:
Алфавит: A, B, C, D, E, F, G, ...
Почему join() — метод строки, а не списка?
Функцию join()
можно использовать с любым итерируемым объектом, но результатом всегда будет строка, поэтому имеет смысл использовать ее как строковый API.
join()
нельзя использовать для объединения различных типов данных в списке:
alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 1, 2, 3]
alphabet_string = ', '.join(alphabet)
print(f'Алфавит: {alphabet_string}')
Результат:
Traceback (most recent call last):
File "C:\Users\Razilator\Desktop\Courses\nth-coding\main.py", line 2, in <module>
alphabet_string = ', '.join(alphabet)
TypeError: sequence item 7: expected str instance, int found
Но, чтоб избежать данной ошибки, можно преобразовать значения в строки следующим образом:
alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 1, 2, 3]
alphabet = [str(i) for i in alphabet]
alphabet_string = ', '.join(alphabet)
print(f'Алфавит: {alphabet_string}')
Результат:
Алфавит: A, B, C, D, E, F, G, 1, 2, 3
Обратное преобразование строки в список
Если Вам необходимо произвести обратную операцию – создать список из строки, Вы можете использовать метод строки split(), который очень похож на join(). Вот простой пример:
alphabet = 'A, B, C, D, E, F, G'.split(', ')
print(f'Алфавит: {alphabet} - {type(alphabet)}')
Результат:
Алфавит: ['A', 'B', 'C', 'D', 'E', 'F', 'G'] - <class 'list'>
Обратите внимание, что здесь порядок объект-аргумент обратный. Это означает, что строка находится слева перед точкой, а в качестве аргумента передается разделитель.