Онлайн-курсы по Python
Выбрать другой урок из курса
Обсуждение
Теория урока

Знакомимся с упорядоченными данными

В предыдущем уроке мы научились генерировать случайные числа. Теперь стоит более глубоко разобраться с тем, какие структуры есть в Python. Ведь программирование – это в основном работа с данными, а чтобы ими эффективнее манипулировать, необходимо их где-то хранить. Это «где-то» и есть структуры.

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

Пример
var1 = "Hello"
var1 = 12
print(var1)          

Одной из особенностей переменных и типов в Python является возможность динамически присваивать значение переменной. Это сильно упрощает написание и понимание кода. В примере выше мы сначала в переменную var1 добавили строку, а затем число и вывели результат. Например, в типизированном языке С++ так делать нельзя: во-первых, мы сначала должны были объявить эти переменные. Во-вторых, в переменную строкового типа нельзя добавить число. Аналогичный код на С++ выглядел бы так (причем 12 уже является строкой, а не числом):

Пример
string var1 = "Hello";         
var1 = "12";         
cout << var1;            

В Python все является объектами: числа, строки, функции, модули и т.д. Следовательно, любой объект можно присвоить переменной. Теперь самое время обсудить, как хранить эти объекты.

В Python есть четыре встроенных структуры данных, которые вы можете использовать для хранения данных: список, картеж, словарь и множество. Под «встроенными» понимается отсутствие необходимости подключать специальные модули.

Список

В Python списки очень похожи на массивы в других языках программирования. Они так же нумеруются с нуля. Но в отличии от того же С++, количество элементов в списке Python’а может динамически изменяться по необходимости. Те, кто знакомы с С++, могли заметить аналогию с контейнером vector из библиотеки STL. Если для вас все вышеназванные понятия в абзаце оказались новыми, не волнуйтесь, сейчас все будет понятно. Массив – это набор элементов, идентифицируемых по индексу. Рассмотрим пример:

Пример
people = ["Иван Иванов", "Петр Петров"]            

В данном случае, массив называется people и содержит два элемента. Сейчас мы не будем привязываться к синтаксису Python, пока только знакомимся с базовыми понятиями.

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

Кортеж

Кортеж – это тоже список, но его нельзя изменить. У многих возникает вопрос: «Зачем нужны неизменяемые списки?». Иногда случаются такие ситуации, когда нам необходимо быть уверенным в том, что список не изменится. Мы еще часто будем встречаться с картежами в дальнейшем.

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

Словарь

Если порядок не важен, то нам может помочь структура под названием «Словарь». Словари в Python хранят коллекции в виде пар ключ/значение. То есть каждому уникальному ключу соответствует значение (необязательно уникальное). Таких пар может быть произвольное количество. Словари, как и списки, являются динамическими и изменяемыми. Для тех, кто знаком с другими языками программирования, словарь в Python можно сравнить с ассоциативным массивом (в С++ на него похож контейнер map). В уроке, посвященном словарям, мы научимся не только с ними работать, но и сортировать как по ключу, так и по значению.

Множество

Последней встроенной структурой является множество. Оно отлично помогает, когда необходимо удалить все повторяющиеся элементы. Множества могут изменяться динамически, как списки и словари. Множества является неупорядоченной структурой, как и словарь. В С++ на него похож контейнер set.

Заключение

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

Подведем краткий итог. Структуры облегчают жизнь программисту. Когда нам нужно создать коллекцию упорядоченных элементов, мы используем списки и кортежи. Если порядок элементов не важен и данные представляются как ключ/значение, то помогут словари. А если вы хотите избавиться от повторов, то выручат множества.

<
×
>
Не публикуйте свой код прямо в комментариях. Во-первых, он плохо отображается. Во-вторых, он может содержать для кого-то «спойлеры», т.е. ответы на практику. Воспользуйтесь специальными сервисами: cssdeck.com или jsfiddle.net.
Комментарии, содержащие код (пару строк не считается), будут безжалостно удаляться.