4. Типы данных

Встроенные типы Python
Заголовок раздела «Встроенные типы Python»Python имеет богатый набор встроенных типов. Основные:
| Тип | Пример | Описание |
|---|---|---|
int | 42, -7 | Целые числа |
float | 3.14, -0.5 | Числа с плавающей точкой |
str | "hello" | Строки |
bool | True, False | Булевы |
None | None | Отсутствие значения |
list | [1, 2, 3] | Изменяемый список |
tuple | (1, 2, 3) | Неизменяемый список |
dict | {"key": "val"} | Словарь (объект) |
set | {1, 2, 3} | Множество (уникальные значения) |
# int — целые числа любой размерностиx = 42big = 1_000_000 # подчёркивание для читаемостиnegative = -17binary = 0b1010 # двоичное = 10hex_num = 0xFF # шестнадцатеричное = 255
# float — числа с плавающей точкойpi = 3.14159scientific = 1.5e10 # 15000000000.0small = 1.5e-3 # 0.0015
# Преобразованиеint(3.9) # 3 (не округляет, обрезает!)float(5) # 5.0round(3.567, 2) # 3.57
# Арифметикаfrom math import sqrt, ceil, floorsqrt(16) # 4.0ceil(3.2) # 4floor(3.9) # 3abs(-5) # 5Строки (подробнее)
Заголовок раздела «Строки (подробнее)»# Созданиеs1 = "Hello"s2 = 'World's3 = """Многострочнаястрока"""
# Индексирование (как в JS)name = "Python"print(name[0]) # "P"print(name[-1]) # "n" (последний)print(name[1:4]) # "yth" (срез)print(name[::-1]) # "nohtyP" (реверс!)
# Методыtext = "hello world"text.capitalize() # "Hello world"text.title() # "Hello World"text.upper() # "HELLO WORLD"text.count("l") # 3text.find("world") # 6 (индекс или -1)text.startswith("hello") # Truetext.endswith("world") # Truetext.zfill(15) # " hello world" (дополнить нулями)
# Строки неизменяемы!# text[0] = "H" — ОШИБКА!new_text = "H" + text[1:] # так правильно
# join — эффективное объединениеwords = ["Python", "is", "awesome"]" ".join(words) # "Python is awesome"", ".join(words) # "Python, is, awesome"Списки (list)
Заголовок раздела «Списки (list)»Аналог массива в JS, но мощнее:
# Созданиеfruits = ["apple", "banana", "cherry"]mixed = [1, "hello", True, None, [1, 2]]empty = []
# Доступprint(fruits[0]) # "apple"print(fruits[-1]) # "cherry"print(fruits[1:]) # ["banana", "cherry"]
# Изменениеfruits.append("mango") # добавить в конецfruits.insert(1, "peach") # вставить на позициюfruits.extend(["kiwi", "pear"]) # добавить списокfruits.remove("banana") # удалить по значениюpopped = fruits.pop() # удалить и вернуть последнийpopped2 = fruits.pop(0) # удалить и вернуть первыйfruits.sort() # сортировка на местеfruits.reverse() # реверс на месте
# Проверка"apple" in fruits # Truelen(fruits) # длина
# List Comprehension — суперсила Python!numbers = [1, 2, 3, 4, 5]squares = [x**2 for x in numbers] # [1, 4, 9, 16, 25]evens = [x for x in numbers if x % 2 == 0] # [2, 4]doubled_evens = [x*2 for x in numbers if x % 2 == 0] # [4, 8]Кортежи (tuple)
Заголовок раздела «Кортежи (tuple)»Как список, но неизменяемый:
point = (10, 20)rgb = (255, 128, 0)single = (42,) # одноэлементный кортеж (запятая обязательна!)
# Распаковкаx, y = pointr, g, b = rgb
# Использование как ключей словаря (списки нельзя!)locations = { (55.75, 37.61): "Москва", (59.93, 30.31): "Санкт-Петербург"}Словари (dict)
Заголовок раздела «Словари (dict)»Аналог объекта в JS:
# Созданиеuser = { "name": "Яша", "age": 2, "role": "admin", "is_active": True}
# Доступprint(user["name"]) # "Яша"print(user.get("email")) # None (безопасно)print(user.get("email", "")) # "" (дефолтное значение)
# Изменениеdel user["age"] # удалить
# Методыuser.keys() # dict_keys(['name', 'role', ...])user.values() # dict_values(['Яша', 'admin', ...])user.items() # dict_items([('name', 'Яша'), ...])
# Проверка"name" in user # True"email" in user # False
# Слияние (Python 3.9+)defaults = {"role": "user", "is_active": True}overrides = {"role": "admin"}merged = defaults | overrides # {'role': 'admin', 'is_active': True}
# Dict Comprehensionsquares = {x: x**2 for x in range(1, 6)}# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}Множества (set)
Заголовок раздела «Множества (set)»Коллекция уникальных значений:
nums = {1, 2, 3, 3, 3} # {1, 2, 3} — дубликаты удаляютсяa = {1, 2, 3, 4}b = {3, 4, 5, 6}
# Операции с множествамиa | b # объединение: {1, 2, 3, 4, 5, 6}a & b # пересечение: {3, 4}a - b # разность: {1, 2}a ^ b # симметричная разность: {1, 2, 5, 6}
# Практический примерusers_a = {"alice", "bob", "charlie"}users_b = {"bob", "dave", "charlie"}common = users_a & users_b # {"bob", "charlie"}only_a = users_a - users_b # {"alice"}Проверка и конвертация типов
Заголовок раздела «Проверка и конвертация типов»# Проверка типаisinstance(42, int) # Trueisinstance(42, (int, float)) # True (один из)type(42) == int # True (точная проверка)
# Конвертацияint("42") # 42int(3.9) # 3float("3.14") # 3.14str(42) # "42"bool(0) # False (0, "", None, [], {} — все False!)bool(1) # Truelist({1, 2, 3}) # [1, 2, 3]set([1, 1, 2]) # {1, 2}tuple([1, 2]) # (1, 2)
# Что является "falsy" (ложным)?# False, None, 0, 0.0, "", [], {}, set()Практические задания
Заголовок раздела «Практические задания»# Задание 1: работа со спискомtasks = ["купить молоко", "сделать PR", "написать тесты"]# Добавь задачу, удали первую, выведи все в нумерованном списке
# Задание 2: работа со словарёмproduct = {"name": "Python Book", "price": 29.99, "in_stock": True}# Добавь поле "category", вычисли цену с налогом 20%
# Задание 3: list comprehensionnumbers = range(1, 21)# Создай список квадратов нечётных чисел от 1 до 20
# Задание 4: множества# Найди новые подписчики и отписавшихсяВ следующем уроке — условия и ветвления!