Задание на изучение типов данных
- В качестве практической работы необходимо нарисовать блок-схемы работы алгоритма решения задач и загрузить в свой репозиторий в течение дня.
- В качестве домашней работы необходимо реализовать программы по ранее созданным алгоритмам решения задач на языке Python и загрузить в свой репозиторий до крайнего срока.
Даты сдачи оговариваются в канале группы.
Python — язык динамически типизированный, то есть тип переменной определяется автоматически при присвоении значения.
Типы данных - это атрибут, определяющий, какого рода данные могут храниться в объекте. Это могут быть целые числа, символы, данные денежного типа, метки времени и даты, двоичные строки и так далее.
Структура данных - это специализированный формат для организации и хранения информации. Она определяет, как расположены и связаны между собой элементы данных, что напрямую влияет на скорость доступа и изменения данных.
Выделяют следующие виды типов данных в Python:
- Неизменяемые (немутабельные, immutable) типы данных
- Изменяемые (мутабельные, muttable) типы данных
- Целочисленные (int, etc.)
- Числа с плавающей запятой (float, etc.)
- Комплексные числа (complex)
- Boolean (bool)
- Строка (str)
- NoneType (None)
Базовых - 4, а конкретнее это Списки, Кортежи, Множества, Словари, их ещё называют стандартными коллекциями и о них чуть подробнее
Изменяемая, упорядоченная последовательность. Может содержать элементы разных типов.
numbers = [1, 2, 3, 4]
# 2. Через конструктор list()
numbers2 = list((1, 2, 3, 4))
# 3. Пустой список
empty = []
empty2 = list()
# 4. Из строки
chars = list("Python") # ['P', 'y', 't', 'h', 'o', 'n']
# 5. Из диапазона
nums = list(range(5)) # [0, 1, 2, 3, 4]
# 6. Через генератор списка (list comprehension)
squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
# 7. С копированием другого списка
copy_list = numbers[:] # поверхностная копия
clone = numbers.copy()
- append(x) добавить в конец
- extend(lst) добавить несколько элементов
- insert(i, x) вставить по индексу
- remove(x) удалить первое вхождение
- pop(i) удалить по индексу и вернуть элемент
- sort(), reverse() сортировка и разворот
- copy() поверхностная копия
Неизменяемая (immutable) упорядоченная коллекция.
# 1. Литерал
point = (10, 20)
# 2. Без скобок (неявный кортеж)
coords = 10, 20, 30
# 3. Один элемент (нужна запятая!)
single = (5,)
# 4. Пустой кортеж
empty = ()
empty2 = tuple()
# 5. Из списка
tuple_from_list = tuple([1, 2, 3])
# 6. Из строки
letters = tuple("abc") # ('a', 'b', 'c')
# 7. Распаковка значений
x, y, z = coords
- count(х). Возвращает количество раз, когда указанный элемент встречается в кортеже. Если элемента нет, то в выводе получится 0
- index(х). Возвращает индекс первого вхождения указанного элемента
Неупорядоченная коллекция уникальных элементов.
# 1. Литерал
fruits = {"apple", "banana", "orange"}
# 2. Пустое множество (только через конструктор!)
empty = set() # {} создаёт dict, а не set
# 3. Из списка (автоматически уберёт дубликаты)
unique_numbers = set([1, 2, 2, 3, 4]) # {1, 2, 3, 4}
# 4. Из строки
chars = set("hello") # {'h', 'e', 'l', 'o'}
# 5. Из диапазона
evens = set(range(0, 10, 2)) # {0, 2, 4, 6, 8}
# 6. Через set comprehension (множество по условию)
squares = {x**2 for x in range(5)} # {0, 1, 4, 9, 16}
- add(x) добавить элемент
- remove(x) удалить (ошибка, если нет)
- discard(x) удалить (без ошибки)
- pop() удалить случайный элемент
- clear() очистить
Неупорядоченная (с Python 3.7 — сохраняет порядок вставки) коллекция пар "ключ: значение".
# 1. Литерал
person = {"name": "Alice", "age": 25}
# 2. Пустой словарь
empty = {}
empty2 = dict()
# 3. Через конструктор dict() с аргументами
user = dict(name="Bob", age=30)
# 4. Из списка пар (список кортежей)
pairs = [("x", 10), ("y", 20)]
coords = dict(pairs) # {'x': 10, 'y': 20}
# 5. Из двух списков (zip)
keys = ["name", "age"]
values = ["John", 40]
person = dict(zip(keys, values)) # {'name': 'John', 'age': 40}
# 6. Из словаря comprehension
squares = {x: x**2 for x in range(5)} # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# 7. Копирование словаря
copy_dict = person.copy()
clone = dict(person)
- get(key, default) безопасное получение
- keys(), values(), items() итераторы
- update(dict2) объединить
- pop(key) удалить по ключу
- clear() очистить