Рубрики
Без рубрики

Плохая петля / хорошая петля в Python

Python – мощный язык с кривой быстрого обучения. Тем не менее, есть некоторые ловушки. … Теги с Python.

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”