Оптимизация функции Python
ревьюер сказал что нужно оптимизировать функцию но я не могу понять как это сделать
class Test:
def __init__(self, name: str, tasks: str, penalties: str) -> None:
self.name = name
self.tasks = int(tasks)
self.penalties = int(penalties)
def __lt__(self, prev: 'Participant') -> bool:
if self.tasks == prev.tasks:
if self.penalties == prev.penalties:
return self.name < prev.name
return self.penalties < prev.penalties
return self.tasks > prev.tasks
def __str__(self) -> str:
return self.name
а комментарий таков:
Вместо `if'-ов советую просто сравнить кортежи
только я вот не пойму как это сделать если у меня на if завязаны return'ы
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Это можно сделать так:
- Избавляемся от
if self.penalties == prev.penalties:,return self.penalties < prev.penalties- так как знаки сравненияnameиpenaltiesодинаковы (<) просто сравнием кортежи(penalties, name):
def __lt__(self, prev: 'Participant') -> bool:
if self.tasks == prev.tasks:
return (self.penalties, self.name) < (prev.penalties, prev.name)
return self.tasks > prev.tasks
- Избавляемся от
if self.tasks == prev.tasks:,return self.tasks > prev.tasks- так как знаки сравнения(penalties, name)иtasksразличаются, то меняем местамиself.tasksиprev.tasks:
def __lt__(self, prev: 'Participant') -> bool:
return (prev.tasks, self.penalties, self.name) < (self.tasks, prev.penalties, prev.name)