Для ускорения кода на Python программисты могут использовать много приемов. Мы собрали несколько самых простых и при этом самых эффективных из них.
Python – один из самых популярных языков программирования в мире. Этим он обязан своему простому синтаксису и богатой экосистеме. В последнее время он используется в соревновательном программировании, где большое значение имеет скорость выполнения программ.
Большинство из наших читателей, вероятно, уже начали писать на Python. Сперва всё кажется простым и очевидным. Но при решении задач со сложными алгоритмами начинается головная боль с Time Limit Exceeded . Однако, в этом нет вины Python – это вина программиста. Да, Python медленный, но если программист напишет эффективную программу, она точно выполнится без подобных загвоздок.
Представляем вам несколько приемов и подходов для ускорения кода и повышения его эффективности.
Как ускорить Python
Используйте подходящие структуры данных
Применение правильных структур данных значительно ускоряет выполнение кода.
В Python встроены такие структуры данных, как список ( list ), кортеж ( tuple ), множество ( set ) и словарь ( dictionary ). Несмотря на это, большинство людей хорошо помнят только про списки. Это неправильный подход.
Для ускорения кода используйте те структуры данных, которые максимально соответствуют вашей задаче. Особенно это касается выбора между списком и кортежем, ведь итерирование по последнему занимает куда меньше времени.
Избегайте циклов for
В случаях, когда цикл for обрабатывает диапазон непостоянного размера, его выполнение в Python происходит медленнее, чем выполнение цикла while . Поэтому в таких случаях лучше прибегайте к while .
Применяйте списковые включения (list comprehension)
Не обращайтесь ни к какой другой технике, если можно использовать списковые включения. Например, этот код заносит в список все числа между 1 и 1000, кратные 3:
L = [] for i in range (1, 1000): if i%3 == 0: L.append (i)
Со списковыми включениями код трансформируется в одну строку:
L = [i for i in range (1, 1000) if i%3 == 0]
Этот приём работает быстрее, чем просто метод append() .
Не пренебрегайте множественным присваиванием
Не стоит инициализировать несколько переменных так:
a = 2 b = 3 c = 5 d = 7
Лучше придерживайтесь следующего синтаксиса:
a, b, c, d = 2, 3, 5, 7
[python_ad_block]
Не создавайте глобальные переменные
Да, в Python есть ключевое слово global для объявления таких переменных. Но операции с ними требуют больше времени, чем с локальными. Потому не создавайте глобальные переменные без крайней необходимости.
Применяйте библиотечные функции
Не пишите функцию вручную, если она уже реализована в какой-нибудь библиотеке. Библиотечные функции крайне эффективны, и, скорее всего, вам не удастся достичь лучшего результата самостоятельно.
⚡ УСКОРЯЕМ PYTHON в 20 РАЗ! | Новый способ :3
Соединяйте строки методом join
В Python конкатенацию строк можно производить при помощи знака + .
concatenatedString = «Программирование » + «это » + «весело.»
Но также для этого есть метод join() .
concatenatedString = » «.join ([«Программирование», «это», «весело.»])
Всё дело в том, что оператор + каждый раз создаёт новую строку, а затем копирует в неё исходные. join() устроен иначе и обеспечивает выигрыш во времени.
Используйте генераторы
Если у вас в списке хранится много данных, которые требуется использовать все за раз, применяйте generator . Это сэкономит ваше время.
Будьте бдительны
Взгляните на следующий код:
L = [] for element in set(L): .