Сообщить об ошибке.

Использование списков list.

Язык программирования Python имеет несколько составных типов данных, используемых для группировки значений. Наиболее универсальным является список, который можно записать в виде списка значений (элементов), разделенных запятыми, в квадратных скобках. Списки могут содержать элементы разных типов, но обычно все элементы имеют одинаковый тип.

>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]

Как и все другие встроенные типы последовательностей, списки можно индексировать и извлекать срезы:

# индексация возвращает элемент
>>> squares[0]
# 1
>>> squares[-1]
# 25

# срез возвращает новый список
>>> squares[-3:]
# [9, 16, 25]

Все операции срезов возвращают новый список, содержащий запрошенные элементы. Это означает, что следующий фрагмент возвращает поверхностную копию списка:

# копирование списка
>>> cp = squares[:]
>>> cp
# [1, 4, 9, 16, 25]
>>> cp.remove(1)
>>> cp
# [4, 9, 16, 25]

# список squares не изменился
>>> squares
# [1, 4, 9, 16, 25]

Списки также поддерживают такие операции, как конкатенация:

>>> squares + [36, 49, 64, 81, 100]
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

В отличие от текстовых строк, которые являются неизменяемыми, списки являются изменяемым типом, то есть можно изменить их содержимое:

>>> cubes = [1, 8, 27, 65, 125]
>>> 4 ** 3
# 64

# заменим  неправильное значение
>>> cubes[3] = 64
>>> cubes
# [1, 8, 27, 64, 125]

Можно добавить новые элементы в конец списка, используя list.append()

>>> cubes.append(216)  # add the cube of 6
>>> cubes.append(7 ** 3)  # and the cube of 7
>>> cubes
# [1, 8, 27, 64, 125, 216, 343]

Возможно присвоение срезов, и это может даже изменить размер списка или полностью очистить его:

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
# ['a', 'b', 'c', 'd', 'e', 'f', 'g']

# заменить некоторые значения
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
# ['a', 'b', 'C', 'D', 'E', 'f', 'g']

# теперь удалим их
>>> letters[2:5] = []
>>> letters
# ['a', 'b', 'f', 'g']

# очистим список, заменив все элементы пустым списком
>>> letters[:] = []
>>> letters
# []

Встроенная функция len(), которая вычисляет количество элементов в списке, также применяется к спискам:

>>> letters = ['a', 'b', 'c', 'd']
>>> len(letters)
# 4

Можно вкладывать списки (создавать списки, содержащие другие списки), например:

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

>>> x[0]
# ['a', 'b', 'c']

>>> x[0][1]
# 'b'

Вот все методы типа данных список:

Такие методы, как list.insert, list.remove или list.sort, которые только изменяют список, не печатают возвращаемое значение, они возвращают значение None по умолчанию. Это принцип проектирования для всех изменяемых структур данных в Python.

Кроме того, вы можете заметить, что не все данные могут быть отсортированы или сравнены. Например, [None, 'hello', 10] не сортируется, потому что целые числа нельзя сравнить со строками, а None нельзя сравнить с другими типами. Кроме того, есть некоторые типы, которые не имеют определенного упорядочения. Например выражение 3+4j < 5+7j комплексных чисел не является допустимым сравнением.

  • list.append(х):
    Добавляет элемент в конец списка. Эквивалент lst[len(lst):] = [x]

  • list.extend(iterable):
    Расширяет список, добавив все элементы из последовательности которая поддерживает итерацию. Эквивалент lst[len(lst):] = iterable

  • list.insert(i, x):
    Вставляет элемент в заданную позицию. Первый аргумент - это индекс элемента, перед которым можно вставить, поэтому lst.insert(0, x) вставляется в начало списка, а выражение lst.insert(len(lst), x) эквивалентно a.append(x).

  • list.remove(x):
    Удаляет первый элемент из списка, значение которого равно x. Поднимает ValueError, если такого элемента нет.

  • list.pop([i]):
    Возвращает элемент в указанной позиции и удаляет этот элемент из списка. Если индекс не указан lst.pop(), то удаляет и возвращает последний элемент из списка. Квадратные скобки вокруг i в сигнатуре метода означают, что параметр является необязательным, а не то, что вы должны вводить квадратные скобки в этой позиции. Вы часто будете видеть это обозначение в Справочнике по библиотеке Python.

  • list.clear():
    Удаляет все элементы из списка. Эквивалент del a[:].

  • list.index(x[, start[, end]]):
    Возвращает нулевой индекс в списке первого элемента, значение которого равно x. Поднимает ValueError, если такого элемента нет.

    Необязательные аргументы start и end интерпретируются так же, как в нотации среза, и используются для ограничения поиска определенной подпоследовательностью списка. Возвращенный индекс вычисляется относительно начала полной последовательности, а не аргумента start.

  • list.count(x):
    Возвращает количество появлений значения x в списке.

  • list.sort(key=None, reverse=False) (см. в описании типа метод list.sort):
    Сортировка элементов списка на месте. Аргументы могут быть использованы для настройки сортировки, значения аргументов, такие-же как во встроенной функции sorted().

  • list.reverse():
    Меняет местами элементы списка. Переворачивает список.

  • list.copy():
    Возвращает мелкую копию списка. Эквивалент lst[:].


Так-же дополнительно смотрите:


Список Python как аргумент по умолчанию.

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

Использование списка в качестве стека в Python.

Методы списка позволяют очень легко использовать список в виде стека, где последний добавленный элемент - это первый извлеченный элемент, "последний пришел, первый вышел".

Использование списка в качестве очереди в Python.

Методы списков не эффективны для построения очереди. Добавление/вставка элемента в конце списка выполняются быстро, а вот вставка элемента в начале списка выполняются медленно, так как все остальные элементы должны быть смещены на один.

Выражение-генератор списка list в Python.

Список-выражение состоит из скобок, внутри которых, сначала идет нужное нам выражение, за которым следует предложение for ... in, далее выражение может включать ноль или более подвыражений for ... in или предложения if ... else

Вложенные выражения-генераторы списков в Python.

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

Операция присваивания на месте и списки в Python.

Рассмотрим пример того, как оператор + работает с объектом list.

Поведение списков Python в разных областях видимости.

Описанное поведение списков в разных областях видимости часто сбивает с толку молодых разработчиков. Ответ более тонкий и кроется в области видимости глобальной переменной списка lst в локальной области функции.

Сравнение и идентичность двух списков в Python.

В материале представлены разные подходы к сравнению двух списков и вычисления их идентичности.

Как получить несколько последних элементов списка в Python.

Получаем 2 способами несколько последних элементов списка в Python.