⚖️ Повторение: стиль решений

⚡ Кратко

Все конструкции урока актуальны. Современные улучшения здесь не заменяют базовые решения, а помогают сделать код читаемее: распаковка вместо индексов, enumerate() вместо ручного счётчика, sorted() вместо изменения входных данных, max(..., key=...) для поиска лидера.

1. Индексы против распаковки

Сложнее читать

for student in students:
    name = student[0]
    points = student[1]
    max_points = student[2]

Лучше для кортежей фиксированной формы

for name, points, max_points in students:
    percent = points / max_points * 100

2. Ручной счётчик против enumerate()

Ручной счётчик

index = 1
for language in languages:
    print(index, language)
    index += 1

Встроенная функция

for index, language in enumerate(languages, start=1):
    print(index, language)

3. Учебный поиск максимума и max(key=...)

В источнике логично показывать поиск максимума через цикл: так видно накопление состояния.

top_product = sales[0]
for product, amount in sales:
    if amount > top_product[1]:
        top_product = (product, amount)
Проверить по документации: после освоения циклов можно использовать max(sales, key=lambda item: item[1]). Это современный компактный стиль, но он требует понимания lambda.
top_product = max(sales, key=lambda item: item[1])

4. Изменять список или возвращать новый

sort() и reverse() подходят, когда исходный список больше не нужен в старом порядке. Если оригинал нужен, берите sorted() или list(reversed(...)).