Объединение списков в Python: инструкция

    Команда Simple-Server
    03.06.2026
    7 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Основные методы объединения списков Python 3

    Наиболее часто используются следующие 7 методов (с некоторыми вариантами, которых мы также коснемся):

    • конкатенация с оператором +,
    • умножение с оператором *,
    • с циклом for,
    • с функцией join(),
    • с функцией extend(),
    • с функцией map(),
    • методом itertools.chain().

    Рассмотрим каждый из них более подробно и приведем примеры кода.

    Конкатенация с оператором +

    Пожалуй, самый простой способ, который не требует особых пояснений:

    >>> sequence1 = [57, 69, 45, 25, 36] >>> sequence2 = ['g', 'w', 'm', 'a', 't'] >>> joined = sequence1 + sequence2 >>> print(joined) [57, 69, 45, 25, 36, 'g', 'w', 'm', 'a', 't']

    Мы создали два списка с целочисленными и буквенными значениями и объединили их путем простого сложения. Заметим, что при этом все элементы списков останутся на своих местах, то есть сначала будут выведены элементы sequence1 , а уже за ним пойдет sequence2 , причем в той же последовательности.

    Если нужно повторить один и тот же список определенное число раз, подойдет оператор *. Посмотрим на его работу на примере одного из предыдущих списков:

    >>> print(sequence2 * 3) ['g', 'w', 'm', 'a', 't', 'g', 'w', 'm', 'a', 't', 'g', 'w', 'm', 'a', 't']

    Как видим, все элементы выдаются в той же последовательности заданное число раз.

    Любителям циклического программирования подойдет такой вариант:

    >>> numbers1 = [38, 98, 17, 37, 12] >>> numbers2 = [34, 30, 78, 75, 11] >>> for num in numbers2: numbers1.append(num) >>> print(numbers1) [38, 98, 17, 37, 12, 34, 30, 78, 75, 11]

    Мы добавили второй список к первому путем перебора каждого элемента во втором и использования метода **append**.

    Также с помощью цикла **for** можно выполнить**** объединение двух вложенных списков Python. Допустим, у нас есть два таких вложенных списка, которые мы должны объединить:

    >>> integers = [[60, 85], [57, 31]]

    Чтобы это сделать, нужно написать следующий код:

    >>> merged = [element for each_list in integers for element in each_list] >>> print(merged) [60, 85, 57, 31]

    Добавим, что имена переменных в коде выше были специально выбраны такими для наглядности, а опытные программисты записали бы этот код примерно в таком виде, с обозначением l для списков и x для их элементов:

    >>> merged = [x for l in integers for x in l] >>> print(merged)

    Чтобы успешно программировать, всегда нужно понимать, как работает код, поэтому сначала можно делать его более наглядным, а уже затем переходить на общепринятые обозначения.

    Цикл **for **также помогает объединять списки Python в словарь. Представим, что у нас есть база данных известных спортсменов в виде множества списков, из которых мы должны сделать единый словарь. Посмотрим, как это можно реализовать. Введите в интерпретаторе данные этих или любых других атлетов с указанием их возраста и вида спорта:

    >>> athletes = [['Bolshunov Aleksandr', 25, 'cross_country_skiing'], ['Fourcade Martin', 33, 'biathlon'], ['Klaebo Johannes', 25, 'cross_country_skiing'], ['Boe Johannes', 29, 'biathlon']]

    А объединить их в словарь можно с помощью следующего кода:

    >>> athletes_dictionary = {element[0]: element[1:] for element in athletes} >>> print(athletes_dictionary) {'Bolshunov Aleksandr': [25, 'cross_country_skiing'], 'Fourcade Martin': [33, 'biathlon'], 'Klaebo Johannes': [25, 'cross_country_skiing'], 'Boe Johannes': [29, 'biathlon']}

    Функция **join()** в Python помогает выполнять объединение элементов списка в строку:

    >>> piece_of_poetry = ['Человек', 'собаке', 'друг:', 'это', 'знают', 'все', 'вокруг.'] >>> piece_string = ' '.join(piece_of_poetry) >>> print(piece_string) Человек собаке друг: это знают все вокруг.

    Чтобы строка получилась с отступами между элементами, мы в качестве имени разделителя добавили в код пробел: ' '.join. Есть и более длинный вариант добавления разделителя через переменную. Слегка изменим часть кода из примера выше:

    >>> delimit = ' ' >>> piece_str = delimit.join(piece_of_poetry) >>> print(piece_str)

    Еще одна простая функция, при помощи которой нетрудно объединить списки. Этот код тоже не требует пояснений:

    >>> numbers1 = [38, 98, 17, 37, 12] >>> numbers2 = [34, 30, 78, 75, 11] >>> numbers1.extend(numbers2) >>> print(numbers1) [38, 98, 17, 37, 12, 34, 30, 78, 75, 11]

    Польза этой функции в том, что она преобразует список, составленный из целых чисел, в строку. Причем **map()** хорошо работает вместе с уже известной нам **join()** , вот пример:

    >>> integers = [38, 98, 17, 37, 12, 34, 30, 78, 75, 11] >>> maplist = map(str, integers) >>> delimit = ', ' >>> result = delimit.join(maplist) >>> print(result) 38, 98, 17, 37, 12, 34, 30, 78, 75, 11

    Обратите внимание, что **str** — это обозначение объекта «строка», поэтому изменять его недопустимо (вы увидите здесь характерную подсветку синтаксиса Python). А вот integers , maplist , delimit и result изменяемые, поскольку это переменные. Мы снова выбрали «говорящие» названия, но вы можете назначить им любые другие, лишь бы они были корректными с точки зрения синтаксиса.

    itertools — вызываемая функция, поэтому для начала вызовем ее командой import:

    >>> import itertools >>> integers = [39, 97, 18, 36, 11, 35, 29, 77, 74, 10] >>> letters = ['g', 'w', 'm', 'a', 't', 'y', 'c', 'k', 'b', 'u'] >>> result = list(itertools.chain(integers, letters)) >>> print(result) [39, 97, 18, 36, 11, 35, 29, 77, 74, 10, 'g', 'w', 'm', 'a', 't', 'y', 'c', 'k', 'b', 'u']

    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны