Python join(): повний гайд з об'єднання списків і рядків у Python

У Python можна об'єднати список рядків в один рядок за допомогою методу join()

Для цього між елементами розміщується певний роздільник (наприклад, кома або пробіл). Цей метод корисний, коли потрібно зберегти список, наприклад літер алфавіту, як один рядок, розділений комами, скажімо, під час запису у файл.

У цьому гайді розглянуто, як об'єднати два списки за допомогою оператора + або itertools.chain() і як поєднувати списки з множинами. Також ідеться про використання strip() для видалення зайвих пробілів на початку або в кінці рядка.

Як об'єднати список у рядок у Python? (Python Join List)

У Python можна використати метод join(), щоб об'єднати елементи списку в один рядок. Оскільки список є ітерованим об'єктом, він чудово працює з цією функцією. Однак усі елементи списку мають бути рядками. Якщо список містить цілі числа або інші типи, Python згенерує TypeError.

Синтаксис методу join у Python

Метод join() у Python використовується, щоб об'єднати список рядків в один рядок, вставляючи заданий роздільник між елементами.

separator.join(iterable)

Параметри:

  • separator: рядок, який потрібно вставити між елементами (наприклад, кома ",", пробіл " ", дефіс "-").
  • iterable: послідовність рядків, наприклад список (["a", "b", "c"]), кортеж або будь-який інший ітерований об'єкт, що містить лише рядкові елементи.

Повертає:

  • Один рядок. Елементи ітерованого списку об'єднуються за допомогою роздільника.

Приклад № 1: об'єднання рядків у Python

Ось простий приклад, який показує, як використати метод join у Python, щоб перетворити список рядків на один рядок. У наступному прикладі використано список фруктів:

fruits = ["apple", "banana", "cherry", "mango"]
fruit_string = " , ".join(fruits)
print("Fruits available:", fruit_string)

Результат:

Об'єднання рядків у Python

Приклад № 2: об'єднання цілих чисел із перетворенням на рядки

Щоб уникнути помилок під час об'єднання списку, який містить цілі числа, спочатку потрібно перетворити кожне число на рядок. Ось як це зробити:

numbers = [10, 20, 30, 40]
# Convert numbers to strings
string_numbers = [str(num) for num in numbers]
result = " - ".join(string_numbers)
print("Combined numbers:", result)

Результат:

Об'єднання цілих чисел із перетворенням на рядки

Наведені приклади показують, як використовувати метод рядків Python join() як зі звичайними списками рядків, так і з числами (після перетворення на рядки).

Об'єднання рядків у Python за допомогою join() (Python String Join)

Метод рядків Python join() також можна використовувати з рядками, хоча частіше його застосовують зі списками. Ось простий приклад:

message = "Hello ".join("World")
print(message)

Результат:

Об'єднання рядків у Python

Примітка: це може дати не той результат, якого ви очікуєте, бо "World" обробляється як послідовність символів. Тому "Hello " вставляється між усіма символами "World".

Чому join() є методом рядка, а не методом списку?

Багато розробників запитують, чому метод join у Python належить до класу рядків, а не є методом списків. Хіба не було б інтуїтивніше писати щось на зразок:

fruit_string = fruits.join(",")

Однак у такого проєктного рішення є вагома причина:

  • Метод join() створює новий рядок, вставляючи роздільник між елементами ітерованого об'єкта.
  • Оскільки результатом завжди є рядок, логічно, що метод належить до типу рядків, а не до списків чи інших ітерованих типів.
  • Це дає змогу join() працювати не лише зі списками, а й із будь-яким ітерованим об'єктом (наприклад, кортежами, множинами), що містить рядки.

Завдяки розміщенню методу в класі str Python не потребує додавання схожих методів до всіх ітерованих типів і забезпечує узгоджену поведінку для різних типів даних.

Об'єднання списку з різними типами даних у Python

Припустімо, у вас є список, який містить і рядки, і числа:

items = ["Car", "Bike", 2025]
separator = " | "
combined = separator.join(items)
print("Combined:", combined)

Результат:

Типи даних у Python

Це спричинить помилку, оскільки join() працює лише з рядками, а число 2025 є цілим.

Метод join() вимагає, щоб усі елементи списку були рядками. Якщо трапиться хоча б один нерядковий елемент (наприклад, ціле число або число з рухомою комою), Python згенерує TypeError.

Щоб виправити це, перетворіть усі елементи на рядки перед використанням join():

items = ["Car", "Bike", 2025]
# Convert each item to a string
items_str = [str(item) for item in items]
combined = " | ".join(items_str)
print("Combined:", combined)

Результат:

Python

Використання join() для додавання роздільників між символами

Хоча join() зазвичай використовують для об'єднання списку рядків, його також можна застосувати до звичайного рядка. У такому разі він розміщує вибраний роздільник між усіма символами рядка.

Приклад:

word = "Tiger"
separator = "-"
result = separator.join(word)
print("Joined string:", result)

Результат:

Типи даних Python

Тут метод join() вставляє дефіс між усіма літерами слова "Tiger".

Як використовувати функцію split() у Python, щоб розбити рядок на список?

Для зворотної операції Python надає метод split(), який розбиває рядок назад на список за тим самим роздільником.

Приклад:

languages = ["Ruby", "C++", "Swift"]
delimiter = " / "
combined = delimiter.join(languages)
print("Combined string:", combined)
# Now split the string back into a list
split_list = combined.split(delimiter)
print("Split list:", split_list)

Результат:

Як використовувати split()

Розбиття рядка обмежену кількість разів N у Python

Метод split() у Python не лише дає змогу розділити рядок за певним роздільником, а й дозволяє контролювати, скільки разів має відбутися розбиття, якщо передати другий аргумент.

Ось приклад:

tools = ["Hammer", "Screwdriver", "Wrench"]
separator = " | "
combined_str = separator.join(tools)
print("Combined string:", combined_str)
# Split the string only once
partial_split = combined_str.split(separator, 1)
print("Split result:", partial_split)

Результат:

Як використовувати split

Практичні сценарії використання join() та itertools.chain()

1. Використання join() для форматування рядків

Коли у вас є список слів і потрібно сформувати речення або структурований рядок, join() є ідеальним методом. Він корисний для створення зручного для читання виводу, наприклад рядків CSV, повідомлень або записів журналу.

Приклад:

parts = ["Data", "Science", "Rocks"]
sentence = " ".join(parts)
print(sentence)

Результат:

Використання join() для форматування рядків

2. Об'єднання великих списків за допомогою itertools.chain()

Якщо ви працюєте з великими списками й хочете ефективно об'єднати їх без використання додаткової пам'яті, itertools.chain() буде чудовим рішенням. Він обробляє кожен елемент «на льоту», тож не потрібно одразу створювати новий об'єднаний список.

Приклад:

from itertools import chain

group1 = [10, 20, 30]
group2 = [40, 50, 60]
merged = list(chain(group1, group2))
print(merged)

Результат:

itertools.chain()

Порівняння продуктивності: join(), оператор + та itertools.chain()

Під час роботи зі списками або рядками в Python вибір відповідного методу їх об'єднання може суттєво вплинути як на швидкість, так і на використання пам'яті. Нижче наведено порівняння того, як працюють join(), оператор + та itertools.chain():

Порівняльна таблиця: join(), оператор + та itertools.chain()

Метод

Що робить

Ефективність

Найкращий сценарій використання

join()

Об'єднує список рядків в один рядок за допомогою вибраного роздільника.

Швидкий і економний щодо пам'яті для рядків.

Ідеальний для створення форматованих рядків, як-от речень або CSV.

Оператор +

Додає списки або рядки, створюючи новий об'єкт на кожному кроці.

Повільніший на великих обсягах даних через повторне копіювання.

Добре підходить для невеликих простих списків або поєднання рядків.

itertools.chain()

Зв'язує кілька ітерованих об'єктів в один без створення додаткових списків.

Висока продуктивність на великих наборах даних.

Найкращий варіант для спільної обробки багатьох великих списків або послідовностей.

Поєднання списків зі словниками або множинами в Python

Під час роботи з різними типами даних, як-от списки, словники та множини, для їх поєднання потрібно розуміти, як поводиться кожна структура:

  • Списки є впорядкованими послідовностями.
  • Словники зберігають пари «ключ-значення».
  • Множини є невпорядкованими колекціями унікальних елементів.

Об'єднання списку зі словником

Щоб поєднати список зі словником, зазвичай список об'єднують або з ключами, або зі значеннями словника, а не з самим словником.

Приклад:

nums = [10, 20, 30]
info = {'x': 100, 'y': 200}
# Combine list with dictionary keys
result_keys = nums + list(info.keys())
print(result_keys) 
# Combine list with dictionary values
result_values = nums + list(info.values())
print(result_values)

Тут ми перетворюємо частини словника на списки, щоб їх можна було об'єднати з початковим списком за допомогою +.

Поєднання списку з множиною

Оскільки множини невпорядковані й містять унікальні елементи, перед об'єднанням їх потрібно перетворити на списки.

Приклад:

colors = ['red', 'blue']
extra_colors = {'green', 'yellow'}
merged = colors + list(extra_colors)
print(merged)

Важлива примітка: порядок елементів множини може відрізнятися, оскільки множини не зберігають порядок.

Висновок

У Python для ефективного поєднання структур даних і керування ними можна використовувати різні методи. Метод рядків Python join() є ідеальним вибором для об'єднання списків рядків в один рядок, тоді як split() допомагає розбивати рядки назад на списки. Оператор + корисний для конкатенації невеликих списків або рядків, хоча на більших наборах даних він може працювати повільніше. 

Для кращої продуктивності з великими або численними ітерованими об'єктами краще обрати itertools.chain(). Під час об'єднання списків із множинами або словниками важливо спочатку перетворити їх на списки. Правильний вибір методу забезпечує чистіший, швидший і надійніший код.

Відчуйте переваги виділених ресурсів разом із гнучкістю хмари з BlueVPS. Це надійне й високопродуктивне VPS-середовище, просте, масштабоване й повністю налаштовуване відповідно до ваших потреб. З BlueVPS ви отримуєте необмежений трафік, повний контроль і безперебійну доступність. Це ідеальне рішення для компаній і розробників, які шукають стабільність, швидкість і свободу в одному потужному хостинг-продукті.

Blog