Задача. Есть три функции, в которых выполняются базовые операции (сортировка, фильтрация, возведение массива в квадрат). Нужно упорядочить эти три функции в порядке возрастания времени, идущего на их выполнение.



def f1(lIn):

l1 = sorted(lIn)

l2 = [i for i in l1 if i<0.5]

return [i*i for i in l2]

def f2(lIn):

l1 = [i for i in lIn if i<0.5]

l2 = sorted(l1)

return [i*i for i in l2]

def f3(lIn):

l1 = [i*i for i in lIn]

l2 = sorted(l1)

return [i for i in l1 if i<(0.5*0.5)]




То есть на входе все функции имеют одинаковые данные, на выходе выдают одинаковый результат. Но из-за того, что внутри операции выполняются в разном порядке, время выполнения будет отличаться. Здесь нужно ориентироваться в алгоритмах и понимать, что происходит с твоими данными в процессе. Эту задачу может решить Junior, а может не решить и Middle. Казалось бы, такая мелочь, но когда мы работаем с большим количеством данных, важно, чтобы код был оптимизирован и программа выполнялась максимально быстро.



@python_job_interview