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 * 1002. Ручной счётчик против 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(...)).