Python – мощный язык с кривой быстрого обучения. Тем не менее, есть некоторые ловушки.
Плохая петля
Петли могут быть сложными, особенно в Python. Я проверил некоторые существующие скрипты, и большую часть времени он работает нормально, но иногда это довольно медленно.
Виновник часто является паршивой петлей. Есть несколько способов написать петли в Python, например, с для Отказ
Есть смежные и неизменные объекты, и это вполне важно, чтобы понять разницу. В отличие от списков, строки неизменны, поэтому, если вы делаете некоторые опасные операции, включающие строки внутри вашей петли, и у вас есть много предметов, время исполнения может быть ужасно.
Следующее плохое:
concat = '' for d in data: concat += d
Предполагая, что список данные
Извлекается из файла .csv, он может быть 1 миллион строк, особенно если вы управляете некоторыми данными государственных правительств. С помощью этого кода вы воссоздаете вашу переменную для каждой строки. Это может занять много времени, чтобы выполнить!
Хорошая петля
Лучший подход может быть:
concat = [] for d in data: concat.append(d) result = '' . join(concat)
Требуется всего несколько секунд, чтобы обработать миллиарды строк. С ручным конкатенацией (первым примером), это занимает минуты!
Представьте, что вам нужно несколько раз настроить свой код, чтобы он работал, он становится кошмаром, чтобы проверить его с первым примером. Это еще хуже с вложенным петельм.
Но подождите, вам всегда нужен цикл?
В большинстве случаев вы пишете петли для извлечения информации или объединения вещей. К сожалению, лучшие трюки часто противоречат.
Кроме того, меньше строк делают код более читаемым.
Есть фантастические инструменты, такие как Itertools С большим количеством функций, которые вы можете использовать, что предотвращает вас изобретать колесо.
Делать функции
Функции великолепны. Это позволяет вам реструктурировать свой код в многоразовые блоки (принцип одной ответственности):
def looper(d): # you can make other treatments here return d concat = [ looper(d) for d in data ] result = '' . join(concat)
Заворачивать
Люблю питон, делайте функции и не обижайся петлей.
Оригинал: “https://dev.to/jmau111/bad-loop-good-loop-in-python-ahf”