Лучший способ изучить Python (пошаговое руководство 2020 года). Часть 5

Уровень 4. Структуры данных и алгоритмы в Python

Если вы достигли этого уровня, похлопайте себя по плечу.

Потому что к настоящему времени у вас есть навыки, которые позволяют вам решать самые разнообразные проблемы.

Однако чего-то не хватает.

Вы все еще недостаточно опытны в написании эффективного кода.

Что мы имеем в виду?

Например, вы не знаете, как изменить свой код, чтобы он работал быстрее. Вы даже не можете проанализировать, почему это медленно в первую очередь.

Это нормально.

Знания, которые вы приобрели на предыдущих уровнях, недостаточны для того, чтобы вы имели четкое представление о том, что на самом деле представляет собой производительность и как изменить существующий код, чтобы он работал быстрее.

Не верите нам? Посмотрите на этот простой код, который вычисляет n-е число Фибоначчи.

def fib(n):

    if n < 2:

        return n

    return fib(n-2) + fib(n-1)



print(fib(100))

 

Код выглядит достаточно простым и очень простым, верно?

Попробуйте использовать этот код для вычисления  fib (100)

 

ПРЕДУПРЕЖДЕНИЕ
[Это займет очень много времени]

 

Теперь давайте сделаем простую модификацию кода.

def fib(n, d):

    if n < 2:

        return n

    if n not in d:

        d[n] = fib(n-2, d) + fib(n-1, d)

    return d[n]



print(fib(100, {}))

 

На этот раз все это заняло несколько миллисекунд, и вы получите ответ — 354224848179261915075 на тот случай, если вам интересно.

Мы использовали то, что называется динамическим программированием, чтобы решить эту проблему и заставить ее работать астрономически быстрее.

Что ж, мы надеемся, что вы уже убедились, что вам следует изучить структуры данных и алгоритмы.

Навыки, которые вы собираетесь освоить на этом уровне, являются одними из основных отличий между средними программистами и опытными программистами.

Вам нужно будет узнать о связанных списках, деревьях, стеках, очередях, графиках, хеш-таблицах, рекурсии, динамическом программировании, алгоритмах поиска и сортировки и т.д.

Как только вы овладеете этими концепциями, вы сможете получить работу по разработке программного обеспечения в любой технологической компании по вашему выбору.

Мы действительно это имели в виду!

 

Начало:



2020-04-25T14:00:19
Python