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

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

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

    Как запускать примеры из этого руководства

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

    1. Создайте файл, например, main.py, используя любой текстовый редактор.
    2. Вставьте код из примера в созданный файл и сохраните его.
    3. Откройте командную строку (Windows) или терминал (Linux/macOS) и перейдите в директорию, где находится ваш файл, с помощью команды cd C:\Users\, где C:\Users — название директории.
    4. Выполните команду python main.py или python3 main.py для запуска вашего скрипта.
    5. Результат выполнения программы будет выведен в консоли.

    Оператор + может использоваться для объединения двух списков в Python. Он добавляет один список в конец другого списка и в результате получается новый список.

    a1 = [1, 12, 5, 49, 56] a2 = [27, 36, 42] list= a1 + a2 print(list) [1, 12, 5, 49, 56, 27, 36, 42]

    Рассмотрим другой случай, в котором генерируется три списка случайных чисел, а после они объединяются в один.

    import random def generate_and_combine_lists(length): if length <= 0: raise ValueError("Длина списка должна быть положительным числом") list1 = [random.randint(1, 10) for _ in range(length)] list2 = [random.randint(1, 100) for _ in range(length)] list3 = [random.randint(1, 1000) for _ in range(length)] try: combined_list = list1 + list2 + list3 return list1, list2, list3, combined_list except TypeError as e: print(f"Ошибка при объединении списков: {e}") return None list_length = 5 list1, list2, list3, combined_list = generate_and_combine_lists(list_length) if combined_list: print(f"Список 1: {list1}") print(f"Список 2: {list2}") print(f"Список 3: {list3}") print(f"Объединенный список: {combined_list}")

    Результат выполнения программы будет выведен в консоли. В нашем случае он будет следующим:

    Список 1: [4, 7, 3, 2, 10] Список 2: [43, 73, 5, 61, 39] Список 3: [500, 315, 935, 980, 224] Объединенный список: [4, 7, 3, 2, 10, 43, 73, 5, 61, 39, 500, 315, 935, 980, 224]

    С помощью оператора * можно легко объединить списки в Python. Оператор * распаковывает коллекцию элементов по аргументам индекса.

    Например, рассмотрим список list1 = [1, 12, 5, 49, 56] и list2 = [27, 36, 42].

    Оператор * заменит список его элементами в позициях index. Таким образом, он распаковывает элементы списков.

    list1 = [1, 12, 5, 49, 56] list2 = [27, 36, 42] list = [*list1, *list2] print(str(list)) [1, 12, 5, 49, 56, 27, 36, 42]

    Ниже представлен пример, в котором объединяются сгенерированные списки в Python с помощью *.

    import random def generate_and_combine_lists(length): if length <= 0: raise ValueError("Длина списка должна быть положительным числом") list1 = [random.randint(1, 100) for _ in range(length)] list2 = [random.randint(1, 100) for _ in range(length)] list3 = [random.randint(1, 100) for _ in range(length)] return list1, list2, list3, *list1, *list2, *list3 list_length = 5 list1, list2, list3, *combined_list = generate_and_combine_lists(list_length) print(f"Список 1: {list1}") print(f"Список 2: {list2}") print(f"Список 3: {list3}") print(f"Объединенный список: {combined_list}") Список 1: [10, 43, 17, 74, 99] Список 2: [65, 91, 56, 37, 37] Список 3: [33, 39, 87, 27, 82] Объединенный список: [10, 43, 17, 74, 99, 65, 91, 56, 37, 37, 33, 39, 87, 27, 82]

    В этом методе мы используем цикл for, чтобы пройтись по второму списку. Потом берем элементы из второго списка и добавляем их в первый. В итоге получается новый список, который состоит из элементов первого и второго списков.

    list1 = [6, 11, 32, 71, 3] list2 = [18, 54, 42] print(str(list1)) for x in list2: list1.append(x) print(str(list1)) [6, 11, 32, 71, 3] [6, 11, 32, 71, 3, 18, 54, 42]

    Способ 4. Генератор списка

    Генератор списка использует цикл for. Генератор списка — это функция, которая создает новый список на основе переданного аргумента. Генераторы списков используются для создания списков, заполненных по сложным формулам. Общий вид генератора следующий:

    list1 = [5, 73, 232, 1, 8, 19] list2 = [84, 56, 7, 10, 20, 30] list = [j for i in [list1, list2] for j in i] print (str(list)) [5, 73, 232, 1, 8, 19, 84, 56, 7, 10, 20, 30]

    Метод extend() Python может использоваться для объединения двух списков в Python. Функция extend() выполняет итерацию по переданному параметру и добавляет элемент в список, таким образом, расширяя его линейно.

    import random list1 = [random.randint(10, 20) for _ in range(5)] list2 = [random.randint(20, 50) for _ in range(3)] print("Первый список:", str(list1)) list1.extend(list2) print("Объединенный список:", str(list1))

    Все элементы списка list2 добавляются к списку list1, и, таким образом, список list1 обновляется и выводится в качестве выходных данных.

    Первый список: [19, 19, 16, 17, 16] Объединенный список: [19, 19, 16, 17, 16, 47, 21, 31]

    Способ 6. Метод itertools.chain()

    Модуль itertools в Python предоставляет множество функций для работы с итераторами, которые могут быть использованы для эффективной генерации списков. Он особенно полезен для создания больших, созданных по сложным правилам списков, поскольку избегает создания всего списка сразу в памяти, что может привести к переполнению памяти для очень больших наборов данных.

    Функцию itertools.chain() модулей Python itertools также можно использовать для объединения списков в Python.

    import itertools list_of_lists = [[1, 5], [3, 4], [7, 12]] chained_list = list(itertools.chain(*list_of_lists)) print(chained_list)

    Рассмотрим ситуацию, когда генерируется буквы и объединяются в список.

    import itertools import string def generate_letter_range(start, stop): for letter in string.ascii_lowercase[start:stop]: yield letter list1 = generate_letter_range(0, 3) list2 = generate_letter_range(7, 16) list = list(itertools.chain(list1, list2)) print(list) ['a', 'b', 'c', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']

    Получение нового списка из чисел:

    import itertools list1 = [5, 73, 232, 1, 8] list2 = [19, 84, 56, 7] list3 = [10,20,30] list = list(itertools.chain(list1, list2, list3)) print(list) [5, 73, 232, 1, 8, 19, 84, 56, 7, 10, 20, 30]

    Генерация списков из рандомных букв. В первом списке 3 буквы, во втором 7.

    import itertools import random import string def generate_letter_list(num_letters): for i in range(num_letters): yield random.choice(string.ascii_letters) num_list1 = 3 num_list2 = 7 list1 = generate_letter_list(num_list1) list2 = generate_letter_list(num_list2) combined_list = list(itertools.chain(list1, list2)) print(combined_list) ['d', 'e', 'O''M', 'q', 'i', 'N', 'V', 'd', 'C']

    Нужен сервер для практики? Арендуйте 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

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