## Генераторы списков (list comprehensions)
Тема:
Короткий способ создать список.
Полезные советы:
* Можно добавлять условия:
* Удобно при парсинге данных и фильтрации.
#азы
Тема:
Короткий способ создать список.
# Обычный способ
squares = []
for i in range(5):
squares.append(i ** 2)
# То же самое в одну строку
squares = [i ** 2 for i in range(5)]
print(squares)
Полезные советы:
* Можно добавлять условия:
even = [i for i in range(10) if i % 2 == 0]
* Удобно при парсинге данных и фильтрации.
#азы
## Сортировка и конвертация коллекций
Тема:
Как упорядочивать данные и менять тип коллекций.
Полезные советы:
*
* Конвертация коллекций помогает удалить дубликаты и менять тип данных под задачу.
* Множества (
#азы
Тема:
Как упорядочивать данные и менять тип коллекций.
numbers = [5, 2, 9, 1]
print(sorted(numbers))
# Вывод: [1, 2, 5, 9]
numbers.sort()
print(numbers)
# Вывод: [1, 2, 5, 9]
a = (1, 2, 3)
print(list(a))
# Вывод: [1, 2, 3]
b = [1, 2, 2, 3]
print(set(b))
# Вывод: {1, 2, 3}
person_ages = {"Аня":25, "Олег":30, "Ира":20}
sorted_keys = sorted(person_ages)
print(sorted_keys)
# Вывод: ['Аня', 'Ира', 'Олег']
Полезные советы:
*
sorted()
возвращает новый список, .sort()
меняет исходный.* Конвертация коллекций помогает удалить дубликаты и менять тип данных под задачу.
* Множества (
set
) удобны для проверки уникальности элементов.#азы
## Функции (`def`)
Тема:
Как объединить повторяющийся код в блок.
Полезные советы:
* Функция должна делать одну понятную вещь.
* Хорошие имена функций экономят время при чтении кода.
#азы
Тема:
Как объединить повторяющийся код в блок.
def greet(name):
print("Привет,", name)
greet("Алексей")
greet("Марина")
Полезные советы:
* Функция должна делать одну понятную вещь.
* Хорошие имена функций экономят время при чтении кода.
#азы
## Лямбда-функции с `map` и `filter`
Тема:
Короткие функции для одноразовых вычислений и фильтрации.
Полезные советы:
* Лямбда удобна для одноразовых функций.
*
#азы
Тема:
Короткие функции для одноразовых вычислений и фильтрации.
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
print(squares)
# Вывод: [1, 4, 9, 16, 25]
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even)
# Вывод: [2, 4]
numbers_sorted = sorted(numbers, key=lambda x: -x)
print(numbers_sorted)
# Вывод: [5, 4, 3, 2, 1]
Полезные советы:
* Лямбда удобна для одноразовых функций.
*
map
применяет функцию ко всем элементам, filter
фильтрует по условию.#азы
## Возврат значений (`return`)
Тема:
Как вернуть результат из функции.
Полезные советы:
* После
* Можно вернуть несколько значений:
#азы
Тема:
Как вернуть результат из функции.
def add(a, b):
return a + b
result = add(3, 5)
print(result)
Полезные советы:
* После
return
функция завершает работу.* Можно вернуть несколько значений:
def stats(a, b):
return a + b, a * b
s, m = stats(2, 3)
print(s, m)
#азы
## Docstrings и аннотации типов
Тема:
Как документировать функции и указывать типы аргументов.
Полезные советы:
* Docstrings помогают понять функцию без просмотра кода.
* Аннотации типов делают код читаемым и помогают IDE подсказать ошибки.
#азы
Тема:
Как документировать функции и указывать типы аргументов.
def greet(name: str) -> str:
"""
Функция приветствует пользователя
:param name: имя пользователя (строка)
:return: приветственное сообщение
"""
return f"Привет, {name}!"
print(greet("Аня"))
# Вывод: Привет, Аня
help(greet)
# Вывод (сокращённо):
# Help on function greet in module __main__:
# greet(name: str) -> str
# Функция приветствует пользователя
Полезные советы:
* Docstrings помогают понять функцию без просмотра кода.
* Аннотации типов делают код читаемым и помогают IDE подсказать ошибки.
#азы
## Аргументы по умолчанию
Тема:
Как задавать значения, если их не передали.
Полезные советы:
* Аргументы по умолчанию упрощают код, особенно в утилитах и чат-ботах.
* Значения по умолчанию задаются справа налево.
#азы
Тема:
Как задавать значения, если их не передали.
def greet(name="гость"):
print("Привет,", name)
greet() # Привет, гость
greet("Андрей") # Привет, Андрей
Полезные советы:
* Аргументы по умолчанию упрощают код, особенно в утилитах и чат-ботах.
* Значения по умолчанию задаются справа налево.
#азы
## Вложенные коллекции
Тема:
Как работать с коллекциями внутри коллекций — списки внутри списков, словари в списках, и как их комбинировать.
Пример кода:
Полезные советы:
* Вложенные коллекции часто встречаются при работе с таблицами, JSON, базами данных.
* Проверяйте наличие ключа через
* Можно комбинировать списки, словари и множества для сложных структур.
#азы
Тема:
Как работать с коллекциями внутри коллекций — списки внутри списков, словари в списках, и как их комбинировать.
Пример кода:
# Список словарей — каждый элемент содержит данные о человеке
data = [
{"name": "Аня", "age": 25, "city": "Москва"},
{"name": "Олег", "age": 30, "city": "Санкт-Петербург"},
{"name": "Ира", "age": 20, "city": "Казань"}
]
# Перебираем список и выводим информацию о каждом человеке
for person in data:
print(f"{person['name']} ({person['age']} лет) — {person['city']}")
# Вывод:
# Аня (25 лет) — Москва
# Олег (30 лет) — Санкт-Петербург
# Ира (20 лет) — Казань
print(data[1]["name"]) # Вывод: Олег
# Список списков
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# Выводим каждый ряд и каждый элемент
for row in matrix:
for num in row:
print(num, end=" ")
print()
# Вывод:
# 1 2 3
# 4 5 6
# 7 8 9
Полезные советы:
* Вложенные коллекции часто встречаются при работе с таблицами, JSON, базами данных.
* Проверяйте наличие ключа через
"key" in dict
.* Можно комбинировать списки, словари и множества для сложных структур.
#азы
## Тернарный оператор
Тема:
Короткая запись условий.
Полезные советы:
* Удобно для простых условий.
* Для сложных логик лучше
#азы
Тема:
Короткая запись условий.
age = 20
status = "Взрослый" if age >= 18 else "Ребёнок"
print(status)
Полезные советы:
* Удобно для простых условий.
* Для сложных логик лучше
if
…else
.#азы
## Анонимные функции (`lambda`)
Тема:
Как писать короткие функции прямо в строке.
**Полезные советы:**
* Хороши для коротких одноразовых операций.
* Если логика сложнее — лучше использовать
#азы
Тема:
Как писать короткие функции прямо в строке.
square = lambda x: x ** 2
print(square(4))
# Использование внутри других функций
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled)
**Полезные советы:**
* Хороши для коротких одноразовых операций.
* Если логика сложнее — лучше использовать
def
.#азы
## Основные методы списков и словарей
Тема:
Как быстро добавлять, удалять и изменять данные в коллекциях.
Полезные советы:
*
* Словари позволяют быстро находить данные по ключу.
*
#азы
Тема:
Как быстро добавлять, удалять и изменять данные в коллекциях.
# Работа со списками
fruits = ["яблоко", "банан"]
fruits.append("вишня")
print(fruits) # Вывод: ['яблоко', 'банан', 'вишня']
fruits.insert(1, "груша")
print(fruits) # Вывод: ['яблоко', 'груша', 'банан', 'вишня']
fruits.remove("банан")
print(fruits) # Вывод: ['яблоко', 'груша', 'вишня']
popped = fruits.pop()
print(popped) # Вывод: вишня
print(fruits) # Вывод: ['яблоко', 'груша']
# Работа со словарями
person = {"name": "Аня", "age": 25}
print(person.keys()) # Вывод: dict_keys(['name', 'age'])
print(person.values()) # Вывод: dict_values(['Аня', 25])
print(person.items()) # Вывод: dict_items([('name', 'Аня'), ('age', 25)])
person["city"] = "Москва"
print(person) # Вывод: {'name': 'Аня', 'age': 25, 'city': 'Москва'}
Полезные советы:
*
.append()
, .insert()
, .remove()
удобны для списков.* Словари позволяют быстро находить данные по ключу.
*
.pop()
полезен для работы со стэками или очередями.#азы
## Файлы: чтение и запись
Тема:
Как работать с текстовыми файлами.
Полезные советы:
*
*
#азы
Тема:
Как работать с текстовыми файлами.
# Запись в файл
with open("example.txt", "w") as file:
file.write("Привет, мир!\n")
file.write("Python — крутой!")
# Чтение файла
with open("example.txt", "r") as file:
content = file.read()
print(content)
Полезные советы:
*
with
автоматически закрывает файл.*
"w"
— перезаписывает, "a"
— добавляет, "r"
— только чтение.#азы
## Работа с путями (`os` и `pathlib`)
Тема:
Как узнавать и менять расположение файлов.
Полезные советы:
*
* Проверяй существование файлов перед чтением.
#азы
Тема:
Как узнавать и менять расположение файлов.
import os
from pathlib import Path
print(os.getcwd()) # текущая папка
os.mkdir("new_folder") # создать папку
path = Path("example.txt")
print(path.exists()) # True если файл есть
print(path.is_file()) # True если файл
print(path.is_dir()) # True если папка
Полезные советы:
*
pathlib
удобен для кроссплатформенной работы с путями.* Проверяй существование файлов перед чтением.
#азы
## CSV-файлы
Тема:
Как работать с таблицами в формате CSV.
Полезные советы:
* CSV удобно для Excel и баз данных.
*
#азы
Тема:
Как работать с таблицами в формате CSV.
import csv # https://www.tgoop.com/python_solves/14
# Запись CSV
with open("data.csv", "w", newline="") as file:
writer = csv.writer(file)
writer.writerow(["Имя", "Возраст"])
writer.writerow(["Аня", 25])
# Чтение CSV
with open("data.csv", "r") as file:
reader = csv.reader(file)
for row in reader:
print(row)
Полезные советы:
* CSV удобно для Excel и баз данных.
*
newline=""
обязательно при записи в Windows.#азы
## Математические функции
Тема:
Используем встроенные функции и модуль
Полезные советы:
*
*
#азы
Тема:
Используем встроенные функции и модуль
math
для вычислений.import math # https://www.tgoop.com/python_solves/14
print(abs(-10))
# Вывод: 10
print(round(3.14159, 2))
# Вывод: 3.14
print(pow(2, 3))
# Вывод: 8
print(math.sqrt(16))
# Вывод: 4.0
print(math.pi)
# Вывод: 3.141592653589793
print(math.sin(math.pi/2))
# Вывод: 1.0
Полезные советы:
*
math
полезен для корней, тригонометрии, констант.*
round()
с отрицательным аргументом округляет до десятков, сотен.#азы
## JSON
Тема:
Сохраняем и читаем структурированные данные.
Полезные советы:
* JSON удобен для обмена данными с сайтами и API.
* В Python словарь ↔️ JSON объект.
#азы
Тема:
Сохраняем и читаем структурированные данные.
import json # https://www.tgoop.com/python_solves/14
data = {"name": "Алексей", "age": 28}
# Сохраняем в файл
with open("data.json", "w") as f:
json.dump(data, f)
# Читаем из файла
with open("data.json", "r") as f:
loaded = json.load(f)
print(loaded)
Полезные советы:
* JSON удобен для обмена данными с сайтами и API.
* В Python словарь ↔️ JSON объект.
#азы
## Проверка принадлежности
Тема:
Как проверить, есть ли элемент в коллекции.
Полезные советы:
* Работает для списков, словарей, множеств, строк.
* Очень удобно для фильтрации данных.
#азы
Тема:
Как проверить, есть ли элемент в коллекции.
fruits = ["яблоко", "банан", "вишня"]
print("банан" in fruits)
# Вывод: True
print("груша" not in fruits)
# Вывод: True
if "яблоко" in fruits:
print("Яблоко есть в списке!")
# Вывод: Яблоко есть в списке!
person = {"name": "Аня", "age": 25}
if "age" in person:
print("Возраст указан:", person["age"])
# Вывод: Возраст указан: 25
Полезные советы:
* Работает для списков, словарей, множеств, строк.
* Очень удобно для фильтрации данных.
#азы
## Обработка ошибок (`try`, `except`)
Тема:
Как не давать программе падать при ошибках.
Полезные советы:
*
* Можно использовать
#азы
Тема:
Как не давать программе падать при ошибках.
try:
x = int(input("Введите число: "))
print(10 / x)
except ValueError:
print("Это не число!")
except ZeroDivisionError:
print("На ноль делить нельзя!")
Полезные советы:
*
try
ловит ошибки, except
реагирует на них.* Можно использовать
finally
для действий, которые выполняются всегда.#азы
## `while` с `else`
Тема:
Особенности цикла
Полезные советы:
*
* Полезно для проверки всех итераций или условий.
#азы
Тема:
Особенности цикла
while
с блоком else
.count = 0
while count < 3:
print("Счёт:", count)
count += 1
else:
print("Цикл завершён без break")
# Вывод:
# Счёт: 0
# Счёт: 1
# Счёт: 2
# Цикл завершён без break
count = 0
while count < 3:
print("Счёт:", count)
if count == 1:
break
count += 1
else:
print("Этот блок не выполнится")
# Вывод:
# Счёт: 0
# Счёт: 1
Полезные советы:
*
else
выполняется, если цикл закончился естественно.* Полезно для проверки всех итераций или условий.
#азы
## Импорт модулей
Тема:
Как подключать сторонний и свой код.
Полезные советы:
* Любую библиотеку можно поставить через
* Свои модули — просто файлы
#азы
Тема:
Как подключать сторонний и свой код.
import math # стандартная библиотека
from math import sqrt # подключаем только нужное
print(math.pi)
print(sqrt(16))
Полезные советы:
* Любую библиотеку можно поставить через
pip
(смотри #начало_работы).* Свои модули — просто файлы
.py
в папке проекта.#азы