Списки в языке программирования Python создаются для хранения объектов одного или нескольких типов. При работе с ними может потребоваться объединить два или несколько списков в один, что актуально, например, при обработке баз данных. В статье мы рассмотрим различные способы выполнения этой операции.
Миграция в облако
безопасно и с гарантией результата.
Предоставим грант до 1 000 000 ₽ на облачную
инфраструктуру и возьмем на себя весь процесс.
Основные методы объединения списков Python 3
Наиболее часто используются следующие 7 методов (с некоторыми вариантами, которых мы также коснемся):
- конкатенация с оператором
+, - умножение с оператором
*, - с циклом
for, - с функцией
join(), - с функцией
extend(), - с функцией
map(), - методом
itertools.chain().
Рассмотрим каждый из них более подробно и приведем примеры кода.
Конкатенация с оператором +
Пожалуй, самый простой способ, который не требует особых пояснений:
Мы создали два списка с целочисленными и буквенными значениями и объединили их путем простого сложения. Заметим, что при этом все элементы списков останутся на своих местах, то есть сначала будут выведены элементы sequence1, а уже за ним пойдет sequence2, причем в той же последовательности.
Умножение с оператором *
Если нужно повторить один и тот же список определенное число раз, подойдет оператор *. Посмотрим на его работу на примере одного из предыдущих списков:
Как видим, все элементы выдаются в той же последовательности заданное число раз.
Варианты с циклом for
Любителям циклического программирования подойдет такой вариант:
Мы добавили второй список к первому путем перебора каждого элемента во втором и использования метода append.
Также с помощью цикла for можно выполнить объединение двух вложенных списков Python. Допустим, у нас есть два таких вложенных списка, которые мы должны объединить:
Чтобы это сделать, нужно написать следующий код:
Добавим, что имена переменных в коде выше были специально выбраны такими для наглядности, а опытные программисты записали бы этот код примерно в таком виде, с обозначением l для списков и x для их элементов:
Чтобы успешно программировать, всегда нужно понимать, как работает код, поэтому сначала можно делать его более наглядным, а уже затем переходить на общепринятые обозначения.
Цикл for также помогает объединять списки Python в словарь. Представим, что у нас есть база данных известных спортсменов в виде множества списков, из которых мы должны сделать единый словарь. Посмотрим, как это можно реализовать. Введите в интерпретаторе данные этих или любых других атлетов с указанием их возраста и вида спорта:
А объединить их в словарь можно с помощью следующего кода:
Функция join()
Функция join() в Python помогает выполнять объединение элементов списка в строку:
Чтобы строка получилась с отступами между элементами, мы в качестве имени разделителя добавили в код пробел: ' '.join. Есть и более длинный вариант добавления разделителя через переменную. Слегка изменим часть кода из примера выше:
Функция extend()
Еще одна простая функция, при помощи которой нетрудно объединить списки. Этот код тоже не требует пояснений:
Функция map()
Польза этой функции в том, что она преобразует список, составленный из целых чисел, в строку. Причем map() хорошо работает вместе с уже известной нам join(), вот пример:
Обратите внимание, что str — это обозначение объекта «строка», поэтому изменять его недопустимо (вы увидите здесь характерную подсветку синтаксиса Python). А вот integers, maplist, delimit и result изменяемые, поскольку это переменные. Мы снова выбрали «говорящие» названия, но вы можете назначить им любые другие, лишь бы они были корректными с точки зрения синтаксиса.
Метод itertools.chain()
itertools — вызываемая функция, поэтому для начала вызовем ее командой import:
Разворачивайте Python-проекты в облаке
477 ₽/мес
657 ₽/мес
Объединение списков с сортировкой
Иногда нужно не просто объединить списки, но и выполнить их сортировку — чаще всего в алфавитном порядке. В этом нам поможет следующий код (вспомним метод конкатенации, который отлично подходит для числовых значений):
Простая функция sorted отсортирует новый список в порядке от меньшего к большему. Это же касается и буквенных значений (немного оптимизируем код и сразу сделаем вывод отсортированного списка, как обычно и требуется):
Еще короче получается код с помощью моржового оператора:
И помните, что сортировать можно только объекты одного типа: например, при попытке сортировки числовых и буквенных значений интерпретатор Python выдаст ошибку.
