Язык программирования 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[:]
.