Списки (list )в Python. Функции и методы списков

В программировании списки являются, пожалуй, такой же полезной структурой данных, как массивы. Что такое списки, как их создавать? Как работать со списками в Python? Об этом вы узнаете из нашей статьи.

Что такое списки (list) в Python?

Типы данных Python: списки
Типы данных Python: списки

Списки частично можно отождествлять с массивами, однако отличие и преимущество листингов (иначе их еще называют листинги) состоит в том, что они могут в себе сочетать разные типы данных. То есть листинг открывает больше возможностей для хранения какой-либо последовательности объектов. Переменная, именуемая списком, заключает в себе ссылку на структуру в памяти, в которой находятся ссылки на альтернативные структуры.

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

Что это значит? Давайте детально разберем определение.

Размер листинга можно изменять, уменьшать, добавлять в него новые строки. Также можно менять полностью структуру списка. Не стоит забывать, что каждый раз, когда используется какой-то метод в списке, меняется исходный список, а не его копия.

Для большей наглядности можно представить листинг в Python, как перечень продуктов, которые необходимо купить в магазине. Если при составлении плана покупок, все необходимые товары располагаются друг под другом, и каждый из них имеет свою собственную строку, то листинг в Python содержит все элементы через запятую и в квадратных скобках, чтобы Python смог понять, что здесь обозначается список. При этом элементы заключаются в кавычки. Это обязательное условие, потому что каждый элемент – это отдельная строка.

Способы создания списка

Переходя к классическому примеру, создадим список, который в дальнейшем будем использовать и изменять. Существует несколько способов образования листингов.

Одним из них является применение встроенной функции list( ). Для этого нужно обработать любой объект, поддающийся итерации (строку, кортеж или же существующий список). В данном случае, строку.

Вот, что получается в исходе:

>>> list('список')
['с', 'п', 'и', 'с', 'о', 'к']

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

>>> s = []  # Пустой список
>>> l = ['s', 'p', ['isok'], 2]
>>> s
[]
>>> l
['s', 'p', ['isok'], 2]

Следующим, третьим, способом образования листингов является так называемый генератор листингов.

Генератор листингов – это синтаксическая конструкция для создания листингов. Она схожа с циклом for.

>>> c = [c * 3 for c in 'list']
>>> c
['lll', 'iii', 'sss', 'ttt']

С его помощью можно также составлять более объемные конструкции:

>>> c = [c * 3 for c in 'list' if c != 'i']
>>> c
['lll', 'sss', 'ttt']
>>> c = [c + d for c in 'list' if c != 'i' for d in 'spam' if d != 'a']
>>> c
['ls', 'lp', 'lm', 'ss', 'sp', 'sm', 'ts', 'tp', 'tm']

Однако такой способ генерации не всегда эффективен при составлении множества листингов. Поэтому целесообразно использовать для генерации листингов цикл for.

Если необходимо обратиться к какому-либо элементу из списка, то используются индексы. У каждого элемента свой индекс.

Индекс – это номер элемента в списке.

Если требуется наполнить листинг повторяющимися, одинаковыми элементами используется символ *.  Например, нужно добавить в листинг три одинаковых числа: [100] * 3.

Функции листингов

Функции – это, пожалуй, главное преимущество Python над другими языками программирования. К спискам можно применять основные встроенные функции.

Рассмотрим наиболее популярные из них:

  • list(range( )) – если стоит задача создать последовательный список, то используется функция range. Эта функция имеет следующие формы:
  1. range(end). Применяется, когда необходимо создать листинг от нуля до конечного числа.
  2. range(start, end). Задается и начальное и конечное число.
  3. range(start, end, step). Параметром step задается характеристика выбора. Например, если нужно выбрать каждое пятое число из последовательности от 1 до 21, то полученный листинг будет иметь вид: [10,15, 20].

Функция range способна значительно сократить объем кода.

  • len(list) – позволяет узнать, сколько элементов в списке.
  • sorted(list, [key]) – сортирует объекты списка по возрастанию.
  • max(list) – возвращает наибольший элемент.
  • min(list) – противоположная функция – позволяет вернуть элемент с минимальным значением.

Также можно использовать другие встроенные функции:

  • list(tuple) – преобразует объект кортежа в список.
  • sum(list) – суммирует все элементы в списке, если все значения являются числами, применяется как к целым числам, так и к десятичным дробям. Однако она справляется не всегда корректно. Если в списке есть нечисловой элемент, функция выдаст ошибку: «TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’».

Методы листингов

Список методов Python
Список методов Python

Вернемся к нашему списку товаров, которые нужно купить в магазине и назовем его shoplist:

shoplist = []

Далее рассмотрим методы листингов:

  • append(item) – с его помощью можно добавить элемент в список. При этом новый элемент будет находиться в конце.

Заполним наш новый листинг нужными продуктами:

shoplist.append(bread)

shoplist.append(milk)

  • list.extend(A) – добавляет “список в список“. Эта функция позволяет сэкономить время, так как можно добавить несколько элементов одновременно. Допустим у нас уже есть листинг фруктов, нужно добавить их к основному списку.

shoplist.extend(fruits)

  • insert(index, item) – вставляет на элемент с указанным индексом заданное значение перед указанным индексом.
  • lcount(item) – показывает число повторений элемента.
  • list.remove(item) – функция, противоположная list.append(x). С ее помощью можно удалить какой-либо элемент. Если выбранного элемента нет в списке, то сообщается об ошибке.
  • pop([index]) – удаляет выбранный элемент и так же возвращает его. Если элемент не указан, то из списка удаляется последний.
  • sort([key]) – ставит элементы в листинге в порядке возрастания, но также можно задать функцию.
  • index(item) – показывает индекс первого выбранного элемента.
  • Развернуть список, то есть зеркально вернуть все его элементы можно с помощью метода reverse(список). Последний элемент становится первым, предпоследний – вторым и так далее.
  • Копия списка создается с командой copy(список).
  • deepcopy(список) – глубокое копированию.
  • Убрать все элементы листинга позволяет метод clear(список).

Стоит заметить, что методы листингов отличаются от строковых тем, что сразу изменяют список, то есть не нужно возвращать результат выполнения.

>>> l = [1, 2, 3, 5, 7]
>>> l.sort()
>>> l
[1, 2, 3, 5, 7]
>>> l = l.sort()
>>> print(l)
None

Далее пример работы со списками:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]

ОфисГуру
Adblock
detector