Программирование на Python. Список в Python: базовые операции
В Python списки — это упорядоченные коллекции. Они являются важной составляющей программного кода. Списки относятся к встроенным объектам языка. С их помощью можно быстро и эффективно обрабатывать большой объем информации и структуры данных любой сложности.
Свойства и особенности объекта list
Списки – это гибкий и изменяемый тип данных. Они могут быть произвольной длины и содержать неограниченное количество информации. В качестве элементов последовательности допускается использование строк, простых и вещественных чисел, словарей. Каждая переменная списка в Python поддается отдельной обработке, удалению или замене.
У списков есть определенный набор свойств, отличающий их от других типов данных:
- Это группы объектов с упорядоченным позиционированием слева направо.
- Списки обеспечивают доступ по смещению, то есть по номеру объекта.
- В Python списки обладают гетерогенностью. В последовательность могут входить объекты разных типов, включая числа, отображения, строки, файлы.
- Lists относятся к категории изменяемых объектов с неограниченным числом вложенности.
Списки можно ошибочно принять за связанные структуры данных. Но на самом деле они являются контейнерами ссылок на объекты, а не их копий. Они как адресная книга. Все элементы list указывают на место, где находится нужный объект. В этом списки Python аналогичны массивам языка C, но реализованы в интерпретаторе.
Базовые операции последовательностей
Формально в языке существует три категории данных. Это числа, отображения и последовательности, к которым относится тип list. Для каждой группы есть общий набор операций. Например, сложение, вычитание и умножение для численных объектов или доступ по ключу к словарям.
У последовательностей также есть свои характерные операции:
- доступ к элементу с использованием целочисленных индексов __getitem __ ();
- определение длины __len __ ();
- конкатенация с помощью оператора «+»;
- извлечение среза [:].
Списки в действии
Списки обладают более широким диапазоном возможностей, чем строки в Python. Это мощный инструмент разработки с рядом специфических функций, применимых только для типа list.
Как выглядят методы списков на практике:
- >>>мой_список = [«один», «2», «три»] #создание нового list;
- >>>мой_список;
- [«один», «2», «три»];
- >>>len(мой_список);
- 3 #интерпретатор возвращает длину;
- >>>мой_список + [1, 2, 3] #выполнение конкатенации;
- [«один», «2», «три», 1, 2, 3];
- >>> мой_список * 2 #повторение;
- [«один», «2», «три», «один», «2», «три»].
При выполнении конкатенации с каждой стороны от знака «+» должны находиться однотипные последовательности, в противном случае интерпретатор выдаст сообщение об ошибке:
- >>>[1, 2, 3] + 3.14 # TypeError: can only concatenate list (not «float») to list.
Для того чтобы сложить в Python строку и список, нужно выполнить предварительное преобразование для типа str:
- >>>второй_список = list(«строка») # преобразование объекта «строка»;
- >>>второй_список;
- [«с», «т», «р», «о», «к», «а»] #интерпретатор возвращает list;
- >>>второй_список + мой_список;
- [«с», «т», «р», «о», «к», «а», «один», «2», «три»].
При создании списка в Python необходимо придерживаться строгих синтаксических правил. Каждый объект должен быть заключен в квадратные скобки, а элементы разделены запятыми.
Что такое итерация и генераторы списков
Итерация представляет собой процесс повторения. В контексте списков – это поочередное продвижение по элементам итерируемого объекта. Например:
- >>>3 in [1, 2, 3] #проверит, входит ли указанный элемент;
- True;
- >>>for x in [1, 2, 3, 4]: #выполнит итерацию;
- print(x);
- 1;
- 2;
- 3;
- 4.
Если итерация – это просто обход каждого элемента, то генерация является процессом создания нового объекта типа list. В Python генераторы списка похожи на циклы for, но быстрее работают и синтаксически выглядят гораздо проще:
- >>>Список_1 = [c * 4 for c in «SPAM»] #так выглядит генерация;
- >>>Список_1;
- [«SSSS», «PPPP», «AAAA», «MMMM»];
- >>>Список_2 = [];
- >>>for c in «SPAM»: #аналогичная генерации команда;
- Список_2.append(c * 4) #list.append() добавляет новые элементы;
- >>>Список_2;
- [«SSSS», «PPPP», «AAAA», «MMMM»].
В обоих примерах результат идентичен. Но с использованием генератора код получается гораздо короче и легче. Такой подход полностью соответствует The Zen of Python. Это дзен, или кодекс языка, в котором один из пунктов гласит: «Простое лучше сложного».
Извлечение среза и доступ по индексу
Эти две операции внешне похожи и позволяют обрабатывать отдельные элементы списка в Python. Но есть существенное различие. В результате индексации возвращается отдельная часть последовательности. А извлечение среза создает новый объект типа list:
- >>>Список1 = [«спам», «Спам», «СПАМ!»]
- >>>Список1[2] #отсчет смещений начинается с нуля
- «СПАМ!»
- >>>Список1[-2] #отрицательное смещение: отсчитывается справа
- «Спам»
- >>>Список[1:] #операция извлечения среза возвращает разделы объекта
- [«Спам», «СПАМ!»]
Как происходит операция извлечения среза и ее возможности
Конструкции языка позволяют не только извлекать, но и изменять отдельные элементы, присваивая им новые значения. В результате возвращается тот же список, только с другой переменной. Эта операция похожа на присваивание по индексу в языке C. Интерпретатор заменяет старую ссылку на указанный в смещении объект новой:
- >>>мой_список = [«один», «восемь», «сто»];
- >>>мой_список[0:2] = [«девяносто восемь», «девяносто девять»];
- >>>мой_список;
- [«девяносто восемь», «девяносто девять», «сто»].
Это достаточно сложная операция, которая происходит в несколько этапов. Сначала интерпретатор удаляет все элементы слева от оператора. В данном примере это «один» и «восемь». Потом все объекты справа от оператора вставляются в список, начиная с левого края.
Описанный процесс обеспечивает гибкую работу со срезами. Количество удаляемых и добавляемых элементов может быть разным. Операция подходит для удаления и замещения объектов, а также для расширения списков. Это довольно мощный способ обрабатывать код. Но программисты редко используют его на практике, предпочитая более простые инструкции insert, pop и remove.
Специфические методы объектов типа list
Большинство методов, или функций направлено на непосредственное изменение объекта. Самым распространенным является .append(). Он добавляет элементы в конец списка:
- >>> my_L = [«Я», «люблю», «программировать», «на»];
- >>> my_L;
- [«Я», «люблю», «программировать», «на»];
- >>> my_L.append(«Питон») #добавит элемент, указанный в скобках;
- >>> my_L;
- [«Я», «люблю», «программировать», «на», «Питон»].
Другой не менее популярный метод называется sort(). Предназначен для сортировки списков в Python. Метод выполняет переупорядочивание элементов с использованием стандартных операторов сравнения. Также его можно использовать для более сложных задач с помощью именованных аргументов:
- >>>L = [«abc», «ABD», «aBe»];
- >>>L.sort(key=str.lower, reverse=True) # Изменяет направление сортировки;
- >>>L;
- [«aBe», «ABD», «abc»].
В примере использовалась синтаксическая конструкция «имя = значение» для передачи параметров настройки. Аргумент key позволяет задать собственные параметры для сравнения. В данном случае это элементы с маленькой буквы. А reverse означает «наоборот», то есть в порядке убывания, а не возрастания.
Подводные камни методов
При работе с данными методами необходимо учитывать следующие особенности: .sort() и .append() изменяют список, но не возвращают его. Конструкция мой_список = Список.sort() не имеет смысла и результата. Именно поэтому в последних версиях языка разработчики ввели функцию sorted(), которая принимает list в качестве аргумента:
- >>>мой_список = [1, 100, 56, 34, 2, 99];
- >>>дубль_списка = мой_список.sort();
- >>>дубль_списка #интерпретатор ничего не возвращает;
- >>>мой_список;
- [1, 2, 34, 56, 99, 100];
- >>>дубль_списка = sorted(мой_список);
- >>>дубль_списка;
- [1, 2, 34, 56, 99, 100] #интерпретатор возвращает отсортированную копию объекта.
Дополнительные методы
Python предлагает дополнительные методы для выполнения специализированной обработки списков. Например, для изменения порядка следования элементов используется reverse. Чтобы вставить несколько элементов в конец или удалить, нужны методы extend и pop. Также существует функция reversed, которая напоминает sorted, но используется через вызов list:
- >>>L;
- [4, 3, 2, 1];
- >>>list(reversed(L)) #встроенная функция сортировки в обратном порядке;
- [1, 2, 3, 4].
Все рассмотренные операции чаще всего применяются к спискам и являются базовыми. Но есть узкоспециализированные методы. Например, .copy(), который создает поверхностную копию объекта, и .count(), возвращающий количество элементов. Чтобы увидеть весь доступный в Python список функций применимых к объекту list, нужно ввести help() или dir() в интерпретаторе.
Похожие статьи
- Платежные системы. Список самых популярных сервисов
- Редкие животные России и мира. Самое редкое животное в мире
- Описание острова Реюньон в Индийском океане
- Что такое скрипт, и как его разрабатывать?
- Кольт «Питон»: история создания
- Анаконда – самая большая змея в мире
- Ядовитая и самая длинная змея в мире