
join()
это одна из встроенных строчных функций в Python, которая позволяет нам создать новую строку из списка элементов строки с определенным пользователем разделителем.
Сегодня мы будем исследовать join()
и узнать о:
join()
синтаксис- как использовать
join()
чтобы объединить список в строку - как объединить кортежи в строку с помощью
join()
- как использовать
join()
со словарями - когда не использовать
join()
join()
Синтаксис
str.join(iterable)
- он требует только одного входящего аргумента, итерированного. Итерированный – это любой объект, поддерживающий итерацию, то есть он определил
__next__
и__iter__
методы Примерами итерированных элементов есть списки, кортежи, строки, словари и наборы. join()
это встроенная строчная функция, поэтому для ее вызова нужна строка- он возвращает одно исходное значение, строка, образованная комбинированием элементов итерированного элемента с вызывающей его строкой, действуя как разделитель
Как использовать join()
чтобы объединить список в строку
Давайте рассмотрим пример:
Мы создаем строчку, состоящую из одного вхождения |
персонаж, как это:
s = "|"
Мы можем использовать dir
чтобы увидеть, какие методы доступны для вызова с помощью s
строчный объект:
dir(s)
Вот результат:

Среди разных атрибутов и имен методов мы можем увидеть join()
метод:

Давайте создадим список строк:
country_names = ["Brazil", "Argentina", "Spain", "France"]
Теперь объедините элементы списка в одну строку с помощью |
как разделитель:
country_names = ["Brazil", "Argentina", "Spain", "France"]
s.join(country_names)

Вот мы это видим join()
возвращает одну строку в качестве исходных данных. Содержимое вызванной строчной переменной join()
является разделителем, разделяющим элементы списка итерированного country_names
формирующий выход. Мы можем использовать любую строку в качестве разделителя, например:
s = ","
s.join(country_names)
или это:
s = "__WC__"
s.join(country_names)

Использование join()
со списками строк имеет много полезных приложений. К примеру, мы можем использовать его для удаления лишних пробелов между словами. Предположим, что мы имеем такое предложение, как ниже, где есть несколько пробелов. Мы можем использовать split()
который разделится на пробелы, чтобы создать список слов:
paragraph = "Argentina wins football world cup 2022 in a nail biting final match that led to a \
spectacular penalty shootout. Football lovers across the world hailed it as one of the most\
memorable matches."
step1 = paragraph.split()
print(step1)
Теперь используем join()
использование одного пробела для воспроизведения исходного предложения без дополнительных пробелов между ними:
" ".join(step1)

Как объединить кортежи в строку с помощью join()
Кортежи – это один из встроенных типов данных в Python, который не позволяет изменять их после создания – они неизменны. Кортежи — это разделенные запятыми списки элементов, заключенных в (), как это:
t = ('quarter-final', 'semi-final', 'final')
Мы можем объединить элементы кортежа так же, как объединяли вместе элементы списка join()
:
",".join
{
"world cup":{
"sport":"Football",
"info":{"year":"2022", "country":"Argentina"}
}
}
}
Мы можем использовать join()
чтобы получить разделенную запятыми строку с ключами и значениями, как это:
column_values = ",".join(d["event"]["world cup"]["info"].keys())
row_values = ",".join(d["event"]["world cup"]["info"].values())

Когда не использовать join()
join()
не сработает, если вы попробуете:
- сочетать итерированные элементы с элементами, не являющимися строками
- объединить вложенные итерированные элементы
Давайте рассмотрим несколько примеров.
Итерированные элементы с элементами, не являющимися строками
join()
нельзя применять к последовательностям, содержащим элементы, отличные от строк. Потому мы не сможем объединить списки с элементами числового типа. Это вызвало бы TypeError так:
names_and_numbers = ["Tom", 1234, "Harry"]
",".join(names_and_numbers)

Вложенные итерации
Если мы попытаемся соединить значение словаря следующим образом:
nested = ["Tom", "Harry", ["Jack", "Jill"]]
",".join(nested)
Мы получим TypeError, как join()
ожидает список строк, но получил список списка строк.

Для таких случаев выровняйте список следующим образом:
flatten =
[ x for x in nested if isinstance(x, list)!=True] + \
[ e for each in nested for e in each if isinstance(each, list)==True]
Вот это:
[ x for x in nested if isinstance(x, list)!=True]
проверяет, входит ли каждый элемент nested
это список. Если нет, он добавляет его в новый список. И это:
[ e for each in nested for e in each if isinstance(each, list)==True]
создает новый одномерный элемент списка для любого элемента в nested
являющийся списком. Теперь бежим join()
нравится это:
nested = ["Tom", "Harry", ["Jack", "Jill"]]
flatten = [ x for x in nested if isinstance(x, list)!=True] + \
[ e for each in nested for e in each if isinstance(each, list)==True]
",".join(flatten)

Подведению
В этой статье мы узнали, как использовать join()
для итераций, таких как списки, словари и кортежи. Мы также узнали, в каких вариантах использования мы можем его применить, и в каких ситуациях следует опасаться join()
не сработал бы.
Надеюсь, вам понравилась эта статья, и желаю вам счастливой и омолаживающей недели.