Урок 2
Типы данных

Разбираем основные типы данных в Python: списки, кортежи, словари, множества и т. д. Рассматриваем часто используемые способы ввода-вывода данных. Решаем задачи.
Logo Python Course Lesson 2

Урок 2
Типы данных

Разбираем основные типы данных в Python: списки, кортежи, словари, множества и т. д. Рассматриваем часто используемые способы ввода-вывода данных. Решаем задачи.

ТЕОРЕТИЧЕСКИЙ БЛОК

В КОНЦЕ УРОКА ЕСТЬ ВИДЕО
One
1

Типизация

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

Выделяют несколько видов типизации:
  1. Явная / неявная
  2. Статическая / динамическая
Рассмотрим данные виды подробнее:
Если подвести итог относительно языка, ради которого мы тут собрались, то: Python - это язык с неявной(динамической) типизаций. На практике это значит, что при создании переменной намеренно указывать ее тип НЕ нужно. Идем дальше.

В Python типы данных можно разделить на:
  1. Встроенные в интерпретатор (built-in) и
  2. Не встроенные, которые можно использовать после импорта соответствующих модулей.
К основным встроенным типам относятся:
1. None (неопределенное значение переменной)
2. Логические переменные (Boolean Type)
3. Числа (Numeric Type)
  1. int– целое число
  2. float – число с плавающей точкой
  3. complex – комплексное число
4. Списки (Sequence Type)
  1. list – список
  2. tuple – кортеж
5. Строки (Text Sequence Type )
  1. str
6. Бинарные списки (Binary Sequence Types)
  1. bytes – байты
  2. bytearray – массивы байт
  3. memoryview – специальные объекты для доступа к внутренним данным объекта через protocol buffer
7. Множества (Set Types)
  1. set – множество
  2. frozenset – неизменяемое множество
8. Словари (Mapping Types)
  1. dict – словарь
Более подробно о встроенных типах данных можно прочитать в официальной документации Python.
С логическими переменными и числами более менее понятно, а вот списки, кортежи и словари разберем немного подробнее. Со строками поработаем в Уроке 4.

Последовательности в Python
Последовательность(Sequence Type) — итерируемый контейнер, к элементам которого есть эффективный доступ с использованием целочисленных индексов.

Последовательности могут быть как изменяемыми, так и неизменяемыми. Размерность и состав созданной однажды неизменяемой последовательности не может меняться, вместо этого обычно создаётся новая последовательность.

Примеры последовательностей в стандартной библиотеке Python:
  1. Список (list) - изменяемая
  2. Кортеж (tuple) - неизменяемая
  3. Диапазон (range) - неизменяемая
  4. Строка (str, unicode) - неизменяемая

Задачи по темам


Решаем задачи и отвечаем на вопросы по теме "Списки": работаем с типом данных list

Специфика типа данных словарь (dict) в Python, характеристики. Примеры использования словарей, задачи с решениями.

Специфика типа данных кортеж (tuple) в Python, методы, операции. Примеры использования кортежей, задачи с решениями.

Специфика типа данных множества (set) в Python, методы, операции. Примеры использования множеств, задачи с решениями.

Two
2

Списки

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

Чтобы использовать списки, их нужно создать. Создать список можно двумя способами(их вообще больше, но для простоты рассмотрим два самых часто используемых).

Способ 1. Использовать квадратные скобки.
Списки list в Python
Python

# Пустой список
>>> empty_list = []
# Список, содержащий буквы
>>> letters_list = ['a', 'b', 'c'] 
# Список с элементами разных типов
>>> rnd_list = ['a', 'b', True, [1, 2, 3]]
Способ 2: Использовать метод list:
Python

# Создаем список на основе строки 'abc'
>>> list('abc')
['a', 'b', 'c']
Т. о. список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.

Далее переходим к действиям со списками. Рассмотрим основные методы:
ВАЖНО!
Нужно отметить, что методы списков, в отличие от строковых методов, изменяют сам список, а потому результат выполнения не нужно записывать в эту переменную.

Т. о. список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.

Далее переходим к действиям со списками. Рассмотрим основные методы:
Python

# Вставляем элемент 2 на место с индексом 1
>>> lst = [1, 3, 4]
>>> lst.insert(1, 2)
>>> print(lst)
[1, 2, 3, 4]

# Добавляем элемент 5 в конец списка
>>> lst.append(5)
>>> print(lst)
[1, 2, 3, 4, 5]

# Развернем список 
>>> lst.reverse()
>>> print(lst)
[5, 4, 3, 2, 1]

# Получим элемент по индексу 2(помним, что индексация начинается с 0)
>>> print(lst[2])
3

# Удалим элемент со значением 4
>>> lst.remove(4)
>>> print(lst)
[5, 3, 2, 1]

Читайте также

Three
3

Кортежи

Кортеж(tuple) – это неизменяемая структура данных, которая по своему подобию очень похожа на список. Кортеж, по сути - неизменяемый список.

Может возникнуть вопрос, а зачем нужны кортежи, если есть списки? Причин несколько:
  1. Защита от дурака. То есть кортеж защищен от изменений, как намеренных(что плохо), так и случайных (что хорошо).
  2. Кортежи в памяти занимают меньший объем по сравнению со списками.
  3. Возможность использовать кортежи в качестве ключей словаря(словари рассмотрим далее). Список в качестве ключа использовать не получится.
Как работать с кортежами? Примерно так же, как и со списками. Создать кортеж можно 2 способами:

Способ 1. Использовать метод tuple():
Python

# Создаем кортеж из набора цифр
>>> tpl = tuple((1, 2, 3, 4))
>>> print(tpl)
(1, 2, 3, 4)
# Создаем кортеж из строки
>>> tpl = tuple('Строка')
>>> print(tpl)
('С', 'т', 'р', 'о', 'к', 'а')
Способ 2. Воспользоваться круглыми скобками ():
Python

>>> tpl = (1, 2, 3, 4)
>>> print(tpl)
(1, 2, 3, 4)
Как работать с кортежами?
  1. Можно применять операции над списками, не изменяющие список (сложение, умножение на число, методы index() и count() и некоторые другие операции).
  2. Доступ к элементам кортежа осуществляется также как к элементам списка – через указание индекса. Но, как уже было сказано – изменять элементы кортежа нельзя!
  3. Удалить отдельные элементы из кортежа невозможно. Но можно удалить кортеж целиком.
  4. На базе кортежа можно создать список, верно и обратное утверждение.
Four
4

Словари

Словари(dict) в Python - неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.

Создать словарь можно двумя способами(их вообще 4, но для простоты рассмотрим два самых часто используемых).

Способ 1. Использовать фигурные скобки {}.
Словари dict в Python
Python

# Пустой словарь
>>> empty_dict = {}
# Словарь с двумя парами ключ-значение
>>> value_dict = {'key1': 'value1', 'key2': 4}
Способ 2: Использовать метод dict():
Python

# Обратите внимание, что 
# 1) для ключей словаря не указываются скобки
# 2) вместо двоеточия используется знак равенства
>>> dct = dict(key1='value1', key2=4)
{'key1': 'value1', 'key2': 4}
Далее переходим к действиям со словарями. Рассмотрим основные методы:
Рассмотрим несколько примеров применения вышеперечисленных команд:
Python

# Создать словарь
>>> dct = dict(key1='value1', key2=4)

# Получить значение по ключу(ВЫЗЫВАЕТ исключение
# при отсутствии такого ключа в словаре)
>>> dct['key1']
'value1'

# Получить значение по ключу(НЕ вызывает исключение
# при отсутствии такого ключа в словаре)
>>> dct.get('key1')
'value1'

# Получить пары ключ-значение
>>> dct.items()
dict_items([('key1', 'value1'), ('key2', 4)])

# Получить все ключи в словаре
>>> dct.keys()
dict_keys(['key1', 'key2'])

# Получить значение по ключу, после чего удалить
>>> dct.pop('key1')
'value1'
>>> print(dct)
{'key2': 4}

# Добавить новое значение в словарь
>>> dct['k3'] = 'v3'
>>> print(dct)
{'key2': 4, 'k3': 'v3'}
Обратите внимание
Присвоение по новому ключу расширяет словарь, присвоение по существующему ключу перезаписывает его, а попытка извлечения несуществующего ключа порождает исключение. Для избежания исключения можно действовать в соответствии с одной из двух стратегий:

1) Для получения элемента использовать метод dict.get(key[, default]) (см. таблицу)
2) Перехватывать и обрабатывать исключение
Five
5

Множества

Множество(set) – это "контейнер", содержащий не повторяющиеся элементы в случайном порядке.

Создать множество можно 2 способами:
Способ 1. Использовать метод set():
Python

# Создаем множество из набора цифр
>>> st = set({1, 2, 3, 4})
>>> print(st)
{1, 2, 3, 4}
# Создаем множество из строки
>>> st = set('Строка')
>>> print(st)
{'к', 'С', 'т', 'а', 'р', 'о'}
Способ 2. Воспользоваться фигурными скобками {}:
Python

>>> st = {1,2,3,4}
>>> print(st)
{1, 2, 3, 4}
# А вот пустое множество так создать нельзя
# Потому что при такой записи получим словарь
>>> st = {}
>>> type(st)
<class 'dict'>
Как работать с множествами? Рассмотрим основные операции:
Неизменяемое множество (Frozenset)
Единственное отличие set от frozenset заключается в том, что set - изменяемый тип данных, а frozenset - нет. Примерно похожая ситуация со списками и кортежами.

Например, если создать неизменяемое множество frozen_set и попробовать вызвать для него метод frozen_set.add('2'), нас ждет провал - добавить новый элемент в уже существующее неизменяемое множество нельзя.

Создать неизменяемое множество можно с помощью метода frozenset():
Например, f_st = frozenset('Word')

Six
6

Ввод-вывод данных в Python. Команда print().

Какие основные манипуляции с данными можно выполнить?
  1. Вывести данные в консоль
  2. Ввести данные с клавиатуры
  3. Записать данные в файл
  4. Прочитать данные из файла
В рамках текущего урока мы с вами затронем только п. 1. Почему? Один из самых распространенных способов вывести данные в Python – это напечатать их в консоли. Если вы находитесь на этапе изучения языка, такой способ является основным для того, чтобы быстро просмотреть результат своей работы. Для вывода данных в консоль используется функция print().

Рассмотрим основные способы использования данной функции:
Терминал - интерактивный режим

# Вывод обычной строки
>>> print('Строка')
Строка

# Вывод конкатенации 2 строк
>>> print('Стр' + 'ока')
Строка

# Вывод числа
>>> print(1)
1

# А вот так не получится
>>> print('Строка ' + 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

# Число нужно привести к типу String
>>> print('Строка ' + str(1))
Строка 1
Пожалуй, на этом с теорией будет достаточно. Переходим к практике.
Seven
7

Еще несколько встроенных функций: dir(), help(), len()

В языке Python есть небольшой набор очень полезных встроенных функций. Все остальные функции распределены по модулям. В самом деле, это удачное проектное решение позволяет предотвратить разбухание ядра языка, как это произошло с некоторыми другими скриптовыми языками (например, Visual Basic). Рассмотрим их подробнее:
Работу с вышеперечисленными методами подробно рассмотрим в практической части урока.

ПРАКТИЧЕСКИЙ БЛОК

One
1

А теперь более наглядно

Мы с вами разобрали основные типы данных в Python(кроме строк, они заслуживают отдельного обсуждения) и изучили основные методы по работе с ними. Теперь предлагаем вам с ними поработать, а именно - решить несколько задач вместе с нами(разбор решения в видео ниже). Список задачек:
Также мы хотели бы показать, как работать с полезными встроенными функциями Python: print(), help(), dir() и len(). Обо всем этом смотрите нашу видео-инструкцию:
Хронометраж
00:00 Полезные команды: print()
00:50 Полезные команды: dir()
03:10 Полезные команды: help()
06:05 Полезные команды: len()
07:35 Решаем задачи
08:10 Решаем задачи. Задача 1. Интерактивный режим.
30:32 Решаем задачи. Задача 2. Интерактивный режим.
33:50 Решаем задачи. Задача 3. Интерактивный режим.
37:20 Решаем задачи. Задача 4. Запускаем программу из файла *.py
Two
2

Домашнее задание

Предлагаем вам написать 2 небольших программы в качестве решения к следующим задачам:
Задача 1
1. Создать произвольный словарь
2. Добавить новый элемент с ключом типа str и значением типа int
3. Добавить новый элемент с ключом типа кортеж(tuple) и значением типа список(list)
4. Получить элемент по ключу
5. Удалить элемент по ключу
6. Получить список ключей словаря
Задача 2
1. Создать множество(set)
2. Создать неизменяемое множество(frozenset)
3. Выполнить операцию объединения созданных множеств
4. Выполнить операцию пересечения созданных множеств

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

Читайте также