Искать
Вы превысили запрос на
0 знаков

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

Не пройден
0
0

Кратко

- Конкатенация - операция склеивания объектов с линейной структурой (строки, списки, очереди, массивы и т.д.).

- В Python для конкатенации списков используются оператор + или метод extend().

- Сортировка списка в Python возможна с помощью функции sorted() или метода sort().

- Функция sorted() применима ко всем итерируемым объектам, метод sort() - только для списков.

- Метод sort() имеет необязательный параметр key для указания функции сравнивающей элементы.

- Параметр reverse позволяет отсортировать список по убыванию.

- Копирование списков в Python может быть выполнено с использованием оператора = или метода copy(), а также с помощью срезов.

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

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

Пример (python)
a = [1, 2, 3]
b = ['a', 'b', 'c']
a + b # => [1, 2, 3, 'a', 'b', 'c']  

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

Пример (python)
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(), в параметре которой должен быть указан нужный список.

Пример (python)
sorted([5, 12, 3, 6, 1, 2, 7]) # => [1, 2, 3, 5, 6, 7, 12] 

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

Пример (python)
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 (о параметрах функции поговорим позднее) для указания функции, которая будет вызываться для каждого элемента до сравнения. Мы забежали немного вперед, если вам не понятно, о чем идет речь, ничего страшного, можете опустить это и вернуться к этому уроку позднее. Например, вам нужно отсортировать список, в котором слова имеют буквы с разными регистрами:

Пример (python)
a = ['CA', 'ba', 'Ab']
sorted(a) # =>  ['Ab', 'CA', 'ba'] 

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

Пример (python)
a = ['CA', 'ba', 'Ab']
sorted(a, key=str.lower) # => ['Ab', 'ba', 'CA'] 

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

Пример (python)
a = ['CA', 'ba', 'Ab']
sorted(a, key=str.lower, reverse=True) 

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

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

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

Пример (python)
a = []
if not a:
    print('Список пуст') 

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

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

Пример (python)
a = [1, 2, 3, 4, 5]
b = a
b[0] = 5
a # => ? 

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

Пример (python)
a = [1, 2, 3, 4, 5]
b = a.copy()
b[0] = 5
a # => [1, 2, 3, 4, 5] 

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

Пример (python)
b = a[:] 

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

Пример (python)
b = list(a) 

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

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

Тест

Две секундочки...

Похожие уроки Codebra

@codebra_official
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Типы данных в PythonЗнакомство с Python
Итоги раздела «Структуры данных в Python»Знакомство с Python
Пользовательские функции в PHPКурс по PHP
Генераторы и оператор yield в PythonЗнакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Основы функций в PythonЗнакомство с Python
Внутреннее устройство и сортировка словаря в PythonЗнакомство с Python
Методы и особенности множеств в PythonЗнакомство с Python
Поиск хостов с помощью NmapРазведка и сканирование
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию и компьютерной безопасности. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Пентесту Active Directory, Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно