temp = a
a = b
b = temp
a, b = b, a # тоже поменяет значения местами
в отдельной паре переменных хранить индекс i, где был обнаружен последний минимум/максимум
... или освой schema migration.
peewee provides a number of helper functions for generating and running schema-altering statements
from playhouse.migrate import *
my_db = SqliteDatabase('my_database.db')
migrator = SqliteMigrator(my_db)
title_field = CharField(default='')
status_field = IntegerField(null=True)
migrate(
migrator.add_column('some_table', 'title', title_field),
migrator.add_column('some_table', 'status', status_field),
migrator.drop_column('some_table', 'old_column'),
)
# если раскомментить @декоратор ниже, можно будет проверять,
# реализует ли полученный объект этот протокол ещё и в рантайме,
# с помощью isinstance(some_object, AUser)
# @typing.runtime_checkable
class AUser(typing.Protocol):
firstName: str
lastName: str
age: int