На этом шаге мы приведем общие сведения об этих типах данных.
Списки, кортежи, множества и диапазоны - это нумерованные наборы объектов. Каждый элемент набора содержит лишь ссылку на объект - по этой причине они могут содержать объекты произвольного типа данных и иметь неограниченную степень вложенности. Позиция элемента в наборе задается индексом. Обратите внимание на то, что нумерация элементов начинается с 0, а не с 1.
Списки и кортежи являются просто упорядоченными последовательностями элементов. Как и все последовательности, они поддерживают обращение к элементу по индексу, получение среза, конкатенацию (оператор +), повторение (оператор *), проверку на вхождение (оператор in) и невхождение (оператор not in).
Списки относятся к изменяемым типам данных. Это означает, что мы можем не только получить элемент по индексу, но и изменить его:
>>> arr = [1, 2, 3] # Создаем список >>> arr[0] # Получаем элемент по индексу 1 >>> arr[0] = 50 # Изменяем элемент по индексу >>> arr [50, 2, 3]
Кортежи относятся к неизменяемым типам данных. Иными словами, можно получить элемент по индексу, но изменить его нельзя:
>>> t = (1, 2, 3) # Создем кортеж >>> t[0] # Получаем элемент по индексу 1 >>> t[0] = 50 # Изменить элемент по индексу нельзя! Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> t[0] = 50 # Изменить элемент по индексу нельзя! TypeError: 'tuple' object does not support item assignment
Множества могут быть как изменяемыми, так и неизменяемыми. Их основное отличие от только что рассмотренных типов данных - хранение лишь уникальных значений (неуникальные значения автоматически отбрасываются). Пример:
>>> set([0, 1, 1, 2, 3, 3, 4]) {0, 1, 2, 3, 4}
Что касается диапазонов, то они представляют собой наборы чисел, сформированные на основе заданных начального, конечного значений и величины шага между числами. Их важнейшее преимущество перед всеми остальными наборами объектов - небольшой объем занимаемой оперативной памяти. Пример:
>>> r = range(0, 101, 10) >>> for i in r: print(i, end=" ") 0 10 20 30 40 50 60 70 80 90 100
В следующих шагах мы рассмотрим все упомянутые типы данных более подробно.
На следующем шаге мы рассмотрим создание списка.