Типы данных
  1. Non-iterable переменные, состоящие из 1 элемента
    1. int целочисленный (неизменяемый): a = 1
    2. float дробный (неизменяемый): a = 0.1
    3. bool логический (неизменяемый): a = True/False или a = 1 < 2
      1. Операторы сравнения: <, <=, >, >=, ==, !=
      2. Логические операторы: and, or, not
    4. complex комплексный (неизменяемый): a = 1 + 2.j
    5. NoneType пустой тип: имеет только одно значение: None
  2. Iterable контейнеры, содержащие несколько переменных
    1. list массив (изменяемый): a = [1, 2, 3]
    2. str строка (неизменяемый): a = "bcd" или a = 'bcd'
    3. tuple кортеж (неизменяемый): a = 1, 2, 3 или a = (1, 2, 3)
    4. dict словарь (неизменяемый): a = {'b': 1, 'd': 2}
    5. set множество (изменяемый): a = {1, 1, 2, 3}
    6. frozenset множество (неизменяемый): a = frozenset([1, 1, 2, 3])
Преобразование типов данных
  1. Преобразование типа выполняется функцией, одноимённой своему типу. Примеры:
    1. a = int("123")
    2. a = str(123)
  2. Преобразование в bool (делается каждый раз, когда переменная проверяется как условие)
    1. int, float True, если отлично от нуля; иначе False
    2. str, list, tuple, dict, set True, если непустое; иначе False
    3. None всегда False
  3. Non-iterable не преобразовываются в iterable
Контейнеры
  1. Контейнеры объекты, которые содержат другие объекты (как правило, любые). Примеры:
    1. Массив из массивов: a = [[1], [1,2], [1,2,3]]
    2. Словарь: a = {'a': 1, 'b': [2,3], 'c': '456'}
  2. Индексация через квадратные скобки a[0]
    1. Элементы контейнера длины имеют индексы 0, ... (N-1)
    2. Обращение к элементам с конца контейнера через отрицательные индексы: a[-1] последний элемент
    3. Срез контейнера от по обозначается двоеточием: a[N:M]
      1. Может отсутствовать или
      2. Пример: a[:5] от по элементы
      3. Пример: a[5:] от по последний элементы
    4. Шаг индексации записывается через второе двоеточие: a[N:M:h]
      1. Пример: a[: :2] от по последний элементы c шагом
  3. range создаёт специальный контейнер c арифметической последовательностью
    1. range(N): от до : range(5) [0, 1, 2, 3, 4]
    2. range(M:N): от до : range(2,7) [2, 3, 4, 5, 6]
    3. range(M:h:N): от до с шагом : range(1,10,2) [1, 3, 5, 7, 9]
  4. Можно проверить наличие элемента в контейнере функцией in:
    1. Пример: 1 in [1,2,3] True
    2. Пример: 'b' in 'abcd' True
Числовые литералы в Python
  1. Двоичное представление числа: a = 0b100 4
  2. Восьмеричное представление числа: a = 0o100 64
  3. Шестадцатеричное представление числа: a = 0xA0 160
  4. Экспоненциальное представление числа: a = 1e4 10000
Нечисловые литералы в Python
  1. Байтовые литералы: a = b"hello" # Неизменяемые байты
  2. Форматированные строки: a = f"sum = {1 + 2}"