python xrange() против range() (original) (raw)
April 16 2010, 14:04
Сегодня у меня во время выполнения одной программы на языке python заканчиваль память и программа вылетала с ошибкой. Эта программа обрабатывает данные и сегодня мне нужно было обработать гиганский кусок данных.
Но тут я вспомнил про функцию xrange(). Она делает тоже самое что и range(), но не создает массива в памяти. Я в коде заменил одну функцию на другую и... Мне этого оказалось достаточно, чтобы обработать нужный кусок данных.
Итак, что это за функция и как ее использовать. Начну с примера
for i in range(10):
print (i)
В этом примере напечатаются числа от 0 до 9 включительно. При этом функция range() создаст в памяти массив из 10 чисел (от 0 до 9). Но если переписать пример в там виде (используя xrange()):
for i in xrange(10): print (i)
То массив в памяти создан не будет, и эта самая память может быть потом использована на более важные вещи.