0

Написал такой код нахождения максимальной даты из всех в списке. заинтересовался насчет оптимизации алгоритма. Каким образом можно уменьшить время выполнения? где можно потренироваться в написании алгоритмов, не считая проект Эйлера (слишком уж замудрено), какую книгу можно почитать, когда уже чувствуешь себя чуть выше новичка и не хочешь в очередной раз читать книгу, наподобие "как легко выучить python"

from datetime import date
def maxDate(dateList):
        maxDate = None
        for i, _ in enumerate(dateList):
            if i == 0:
                maxDate = dateList[i]
            if i == len(dateList)-1:
                continue
            if maxDate < dateList[i+1]:
                maxDate = dateList[i+1]
        return maxDate

print(maxDate([date(2141, 2, 4),date(2089, 10, 6),date(2034, 11, 4),date(2017, 3, 31), date(2087, 3, 3), date(2051, 2, 4)]))

  • Книги - https://ru.stackoverflow.com/questions/454683/%d0%9a%d0%bd%d0%b8%d0%b3%d0%b8-%d0%b8-%d0%b4%d1%80%d1%83%d0%b3%d0%b8%d0%b5-%d0%bc%d0%b0%d1%82%d0%b5%d1%80%d0%b8%d0%b0%d0%bb%d1%8b-%d0%b4%d0%bb%d1%8f-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d1%8f – llollcat Oct 01 '20 at 18:20

2 Answers2

3

как вариант:

print(max(date(2141, 2, 4),date(2089, 10, 6),date(2034, 11, 4),date(2017, 3, 31), date(2087, 3, 3), date(2051, 2, 4)))

или так:

print(max(*[date(2141, 2, 4),date(2089, 10, 6),date(2034, 11, 4),date(2017, 3, 31), date(2087, 3, 3), date(2051, 2, 4)]))
S. Nick
  • 74,889
2

Если вас интересует именно оптимизация:

def maxDate(dateList):
    maxDate = dateList[0]  # выбирает максимальной первую дату
    for date in dateList:  # по очереди перебираем даты
        if date > maxDate:  # если дата больше, чем записанная в  maxDate
            maxDate = date  # пишем ее в maxDate
    return maxDate
n1tr0xs
  • 11,944