Codebra
29 января 2026 в 18:33

Урок 21. Конкатенация и сортировка списков в Python

Что такое конкатенация, использование метода sort и функции sorted для сортировки в Python.
📝

Внимание! На этой странице вы найдете материал урока из архивного курса по Python. Курс был написан в 2024 году и по-прежнему актуален для начинающих разработчиков.

Теоретический материал сохранен в исходном виде, а практические задания с автоматической проверкой вынесены в отдельные интенсивы и задания.

Полный список уроков доступен по тегу Архивный курс по Python и на странице первого урока.

📝 Кратко
  • Конкатенация - операция склеивания объектов с линейной структурой (строки, списки, очереди, массивы и т.д.).
  • В Python для конкатенации списков используются оператор + или метод extend().
  • Сортировка списка в Python возможна с помощью функции sorted() или метода sort().
  • Функция sorted() применима ко всем итерируемым объектам, метод sort() - только для списков.
  • Метод sort() имеет необязательный параметр key для указания функции сравнивающей элементы.
  • Параметр reverse позволяет отсортировать список по убыванию.
  • Копирование списков в Python может быть выполнено с использованием оператора = или метода copy(), а также с помощью срезов.

В предыдущем уроке вы узнали про обратное индексирование и познакомились с ранее не рассмотренными методами списков. В этом уроке поговорим про конкатенацию и сортировку списков.

Конкатенация – это операция склеивания объектов, имеющих линейную структуру, например, строк, списков, очередей, массивов и т.д. В Python склеить два списка очень просто. Для этого используется оператор + или метод extend(). Пример:

a = [1, 2, 3]
b = ['a', 'b', 'c']
a + b # => [1, 2, 3, 'a', 'b', 'c'] 

Используя метод extend(), необходимо помнить, что он не возвращает новый список, а модифицирует тот, на котором был вызван. Например:

a = [1, 2, 3]
b = ['a', 'b', 'c'] 
c = a.extend(b)
a # => [1, 2, 3, 'a', 'b', 'c']
b # => ['a', 'b', 'c']
c # => None    

По конкатенации список в Python добавить больше нечего. Теперь перейдем к сортировке списков.

Сортировка списка в Python

Сортировка в Python может осуществляться при помощи функции sorted(), если объект является итерируемым. Итерируемый объект (iterable) – это объект, который может возвращать элементы по одному и из которого можно получить итератор (про итераторы поговорим намного позднее). Списки относятся к итерируемым объектам, как и словари, кортежи, строки и файлы.

Так же список имеет метод sort() (Чем отличается метод от функции, мы поверхностно разобрали в предыдущем уроке.

Чтобы вернуть список с элементами, отсортированными по возрастанию, достаточно просто вызвать функцию sorted(), в параметре которой должен быть указан нужный список.

sorted([5, 12, 3, 6, 1, 2, 7]) # => [1, 2, 3, 5, 6, 7, 12]

Или можно использовать метод sort(), который изменяет исходный список (в отличие от функции sorted(), которая возвращает новый и не меняет переданный список).

a = [5, 12, 3, 6, 1, 2, 7]
a.sort()
a # => [1, 2, 3, 5, 6, 7, 12] 

В дополнении к выше сказанному, метод sort() определен только для списков, в свою очередь, функция sorted() может быть применима ко всем итерируемым объектам.

Еще с версии Python 2.4. у метода sort() и функции sorted() появился необязательный параметр key (о параметрах функции поговорим позднее) для указания функции, которая будет вызываться для каждого элемента до сравнения. Мы забежали немного вперед, если вам не понятно, о чем идет речь, ничего страшного, можете опустить это и вернуться к этому уроку позднее. Например, вам нужно отсортировать список, в котором слова имеют буквы с разными регистрами:

a = ['CA', 'ba', 'Ab']
sorted(a) # =>  ['Ab', 'CA', 'ba']

Символ C в верхнем регистре стоит перед символом b в нижнем регистре, поэтому отсортированный список получился не таким, каким мы его ожидали. В данной ситуации поможет параметр key, который будет ссылаться на метод lower строкового объекта:

a = ['CA', 'ba', 'Ab']
sorted(a, key=str.lower) # => ['Ab', 'ba', 'CA']

Вторым полезным параметром метода sort() и функции sorted() является reverse, который говорит сам за себя. Он может быть равен True или False. Отсортируем предыдущий список по убыванию:

a = ['CA', 'ba', 'Ab']
sorted(a, key=str.lower, reverse=True)

Это еще не все возможности сортировки в Python, о других будет рассказано позднее.

Проверка списка на пустоту в Python

Иногда бывает необходимость проверить список на пустоту. Это можно сделать очень просто при помощи инструкции if и оператора not:

a = []
if not a:
    print('Список пуст')

Копирование списков в Python

И последнее, про копирование списков в Python. Копирование списка при помощи оператора = таит в себе определенную особенность и, в каком-то роде, опасность. Рассмотрим пример:

a = [1, 2, 3, 4, 5]
b = a
b[0] = 5
a # => ?

Мы создали список a, после чего скопировали его в b. Далее нулевой элемент списка b поменяли. Как будет выглядеть список a? Как прежде? Думаю, вы догадались, в чем подвох. Во второй строке осуществляется копирование не списка, а ссылки на него. Как исправить? Использовать метод copy(), который возвращает сам список, а не ссылку на него:

a = [1, 2, 3, 4, 5]
b = a.copy()
b[0] = 5
a # => [1, 2, 3, 4, 5]

Есть и другой нетривиальный способ с использованием срезов:

b = a[:]

И более предпочтительный вариант, нежели предыдущий с использованием встроенной функции list():

b = list(a)

В этом уроке вы узнали, что такое конкатенация и как она используется в Python. Познакомились с методом списка sort() и функцией sorted(), которая применима к итерируемым объектам. Так же узнали про копирование списков и готовы к неожиданному поведению программы при неправильном копировании.

В следующем уроке мы начнем знакомиться с другой структурой данных - словарем. Научимся объявлять словарь в Python и добавлять в него элементы.

📝

Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегу Python.