#python
Вопрос:
Мне было интересно, если я использую какое-либо выражение или функцию внутри диапазона(), будет ли оно вычислять это выражение на каждой итерации или только в первый раз? Например, это:
l = len(some_array) for i in range(l): ...
или
for i in range(len(some_array)): ...
это быстрее? Кроме того, то же самое относится и к enumerate()?
Комментарии:
1. Нет, функция будет оценена только один раз. Всегда используйте клизму
2. Второй способ немного быстрее (так как ему не нужно хранить и загружать переменную).
Ответ №1:
Код range(len(some_array))
создает range
экземпляр объекта-генератора, затем выдает его значения, len
вычисляется один раз и передается в range
Чтобы выполнить итерацию по структуре и получить также позицию, используйте enumarate
, у вас уже есть доступные индекс и значение, и вам не нужно вычислять длину
for i, value in enumerate(some_array): pass