5. Структуры данных

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

Инициализировать список, кортеж и словарь можно несколькими способами. Один из наиболее распространенных — присвоить соответствующие символы переменной. Для списка эти символы — [], для кортежа — (), а для словаря — {}. Если присвоить эти символы без значений внутри, то будут созданы соответствующие пустые структуры данных.

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

Где используется

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

  • Списки: содержат значения. Ими могут быть числа, строки, имена и так далее:
    • Модели автомобилей;
    • Имена собак;
    • Посещенные страны;
    • Посетители магазина и так далее;
  • Кортежи: этот тип данных очень похож на список, но с одним исключением. После создания кортежа его значения нельзя менять. Списки — изменяемые, а кортежи — нет. Это может понадобиться в определенных случаях для достижения безопасности или просто удобства. В кортежах могут, например, храниться:
    • Все месяцы года;
    • Дисциплины Олимпийских игр;
    • Штаты США;
      Важно только отметить, что кортежи не являются вообще неизменяемыми, ведь вы всегда можете переписать код, поменяв или удалив определенные значения. Речь идет о том, что значения не могут быть изменены после создания — во время работы программы.
  • Словари — это пары из ключа и значения. Словари также являются изменяемыми. Это удобная структура данных, которая подходит для сохранения значения с определенными дополнительными параметрами, например:
    • Данные клиента включая список его покупок
    • Названия стран + их количество олимпийских медалей
    • Автомобильные бренды и их модели
    • Страны с количеством ДТП с летальным исходом
  • Функции list() и dict() очень простые. Они помогают создавать соответствующие структуры данных.

Рекомендации по работе со структурами данных

  1. List(), dict() и float() используют круглые скобки, потому что они являются функциями;
  2. Скобки сами по себе представляют кортеж, и их не стоит путать со скобками в функциях, например, list();
  3. При создании пустого списка нужно использовать квадратные, а не круглые скобки: [].

Функция №1: list()

У функции list() очень простой сценарий применения.

C помощью скобок создается список. После этого выводится переменная с присвоенным ей пустым списком. Выводится «[]», что указывает пусть и на пустой, но список. После этого выводится подтверждение того, что это действительно список.


>>> my_first_list = []
>>> print(my_first_list )
>>> print(type(my_first_list ))
[]
<class 'list'>

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


>>> my_first_list = list()
>>> print(my_first_list)
>>> print(type(my_first_list))
[]
<class 'list'>

Функция №2: dict()

Рассмотрим функцию dict(), с помощью которой можно создать словарь Python.


>>> my_first_dictionary = {}
>>> print(my_first_dictionary)
>>> print(type(my_first_dictionary))
{}
<class 'dict'>

И вот еще один пример создания пустого словаря. Тот же результат, но с помощью функции dict().


>>> my_first_dictionary = dict()
>>> print(my_first_dictionary)
>>> print(type(my_first_dictionary))
{}
<class 'dict'>

Функция №3: tuple()

Функция tuple() для создания кортежа Python. Пример с присваиванием переменной пустого кортежа.


>>> my_first_tuple = ()
>>> print(my_first_tuple)
>>> print(type(my_first_tuple))
()
<class 'tuple'>

И снова тот же результат, но уже с помощью функции tuple().


>>> my_first_tuple = tuple()
>>> print(my_first_tuple)
>>> print(type(my_first_tuple))
()
<class 'tuple'>

Советы:

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

Создадим список со значениями внутри.


>>> mylist = ["лыжные ботинки", "лыжи", "перчатки"]
>>> print(mylist)
>>> print(type(mylist))
["лыжные ботинки", "лыжи", "перчатки"]
<class 'list'>

В этом примере список состоит из 3 строковых значений. Но все три типа — списки, словари и кортежи — могут включать разные типы данных.

Теперь создадим словарь с этими значениями.


>>> mydict = {"лыжные ботинки": 3, "лыжи": 2, "перчатки": 5}
>>> print(mydict)
>>> print(type(mydict))
{"лыжные ботинки": 3, "лыжи": 2, "перчатки": 5}
<class 'dict'>

В этом примере создается словарь. Он присвоен переменной mydict, которая состоит из 3 ключей: “лыжные ботинки”, “лыжи” и “перчатки”. Каждому ключу присвоено свое значение: 3, 2 и 5 соответственно.

Теперь создадим список со значениями разных типов.


>>> mylist = ["карабины", False, "порошок", 666, 25.25]
>>> print(mylist)
>>> print(type(mylist))
["карабины", False, "порошок", 666, 25.25]
<class 'list'>

В этом примере список включает 5 значений четырех разных типов: строка, булев тип, строка, целое число и число с плавающей точкой.

Наконец, создадим пример кортежа.


>>> mytuple = ("карабины", False, "порошок", 666, 25.25)
>>> print(mytuple)
>>> print(type(mytuple))
("карабины", False, "порошок", 666, 25.25)
<class 'tuple'>

Единственное отличие здесь в том, что используются круглые (), а не квадратные [] скобки.

Мы кратко рассмотрели структуры данных, в следующих уроках разберем каждый подробно.

Задачи к уроку

Попробуйте решить задачи к этому уроку для закрепления знаний.

1. Создайте пустой список, определите его тип и выведите в консоль.

# данный код
gift_list=
answer_1=
print(answer_1)
# требуемый вывод:
# <class 'list'>

2. Допишите код, чтобы gift_list был заполненным кортежем. Порядок элементов значения не имеет.

gifts=
print(gifts)
# требуемый вывод:
# ("Камера", "Наушники", "Часы")

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

stats = {1 - 10, 220, 3 - 30, 4 - 40, 5 - 50 6 - 60}
print(stat)
# требуемый вывод:
# {1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}

Файл со всем заданиями: https://gitlab.com/PythonRu/python-dlya-nachinayushih/-/blob/master/lesson_5.py.

Тест по конвертации типов данных

Пройдите тест к этому уроку для проверки знаний. В тесте 5 вопросов, количество попыток неограниченно.

Структуры данных

Какие структуры данных можно изменять?
Что выведет этот код:
tuple1 = (1120, 'a')
print(tuple1)
Что выведет этот код:
target = ["1"]
print(target)
Выберите правильный способ создания пустого словаря
Что выведет этот код:
mylist = (2019, 2020, 2021)
print(mylist)

Если нашли ошибку, опечатку или знаете как улучшить этот урок, пишите на почту. Ее можно найти внизу сайта.

Появились вопросы? Задайте на Яндекс Кью

У блога есть сообщество на Кью >> Python Q <<. Там я и другие участники отвечаем на вопросы по python, программированию и контенту сайта.

Обучение Python и Data Science

Профессия Python-разработчик / Skillbox

Профессия Python-разработчик / Skillbox

7 313 2 925 ₽/мес.
Профессия Python Fullstack / Skillbox

Профессия Python Fullstack / Skillbox

6 569 2 627 ₽/мес.
Профессия Data Scientist / Skillbox

Профессия Data Scientist / Skillbox

9 187 3 675 ₽/мес.
Python-фреймворк на Django / Skillbox

Python-фреймворк на Django / Skillbox

818 ₽/мес.
Профессия DS: машинное обучение / Skillbox

Профессия DS: машинное обучение / Skillbox

6172 2469 ₽/мес.
Профессия DS: анализ данных / Skillbox

Профессия DS: анализ данных / Skillbox

6172 2469 ₽/мес.

Вам помогла эта статья? Поделитесь в соцсетях или блоге. Репосты помогают сайту развиться.

Александр эксперт Яндекс.Кью
Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.
Мои контакты: