1. Используйте встроенные функции
Представляю вашему вниманию 5 простых советов как ускорить код на Python – это сравнительные примеры с отображением времени.
Часто встроенные функции могут заменить циклы и ускорить выполнение кода. Например, для преобразования каждого элемента списка в заглавную букву можно использовать функцию map() и метод capitalize():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # медленный способ start = time.time() new_list = [] for word in word_list: new_list.append(word.capitalize()) print(time.time() - start, "секунд") >>>> 4.935264587402344e секунды # быстрый способ start = time.time() word_list = ['Ways', 'to', 'Make', 'Your', 'Python', 'Code', 'Faster'] new_list = list(map(str.capitalize, word_list)) print(time.time() - start, "секунд") >>>> 0.00029468536376953125 ceкунды |
2. Используйте метод join() вместо конкатенации строк
Конкатенация строк через += может быть медленной, особенно при больших объемах данных. Вместо этого используйте метод join():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # медленный способ start = time.time() new_list = [] for word in word_list: new_list += word print(time.time() - start, "секунд") >>>>> 5.7220458984375e-05 секунд # быстрый способ start = time.time() word_list = ['Ways', 'to', 'Make', 'Your', 'Python', 'Code', 'Faster'] new_list = "".join(word_list) print(time.time() - start, "секунд") >>>>> 0.0001430511474609375 секунд |
3. Создавайте списки и словари быстрее
Использование функций list() и dict() для создания новых списков и словарей может быть медленным. Вместо этого используйте квадратные скобки и фигурные скобки:
1 2 3 4 5 6 7 8 9 10 11 12 | # медленный способ slower_list = timeit.timeit("list()", number=10**6) slower_dict = timeit.timeit("dict()", number=10**6) # быстрый способ faster_list = timeit.timeit("[]", number=10**6) faster_dict = timeit.timeit("{}", number=10**6) >>>>> slower_list: 0.03651356499995018 sec >>>>> slower_dict: 0.047055111999952715 sec >>>>> faster_list: 0.010666104999927484 sec >>>>> faster_dict: 0.010838708999926894 sec |
4. Используйте f-строки вместо конкатенации строк
Использование оператора + для конкатенации строк может быть медленным. Вместо этого используйте f-строки:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # медленный способ start = time.time() me = "Python" string = "Make " + me + " faster" print(time.time() - start, "секунд") >>>>> 0.06872344017028809 секунд # быстрый способ start = time.time() me = "Python" string = f"Make {me} faster" print(time.time() - start, "секунд") >>>> 0.04211759567260742 секунд |
5. Используйте генераторы списков вместо циклов
List comprehension – это компактный и быстрый способ создания списка в Python. Он состоит из квадратных скобок, содержащих выражение, за которым следует цикл for, который перебирает элементы, которые будут включены в список.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #slow start = time.time() new_list = [] existing_list = range(1000000) for i in existing_list: if i % 2 == 1: new_list.append(i) print(time.time() - start, "секунд") >>>>> 0.06872344017028809 seconds #fast start = time.time() existing_list = range(1000000) new_list = [i for i in existing_list if i % 2 == 1] print(time.time() - start, "seconds") >>>>> 0.04211759567260742 seconds |
