в первом варианте цикл выполняется ТРИ раза, а во втором только один раз  читай документацию по range:
| Цитата | 4.3 Функции range() и xrange() Если Вам необходимо перебирать последовательность чисел, то пригодится встроенная функция range(). Она создает список, содержащий арифметическую прогрессию: >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Указанная верхняя граница никогда не входит в созданную последовательность. range(10) создает список из 10 значений, точно соответствующих допустимым ин- дексам для элементов последовательности, имеющей длину 10. Можно указать другую нижнюю границу или другое приращение (шаг), в том числе и отрицательное: (в том числе и инструкция for) требует возможности получить произвольный элемент по индексу. 38 Глава 4. Средства управления логикой >>> range(5, 10) [5, 6, 7, 8, 9] >>> range(0, 10, 3) [0, 3, 6, 9] >>> range(-10, -100, -30) [-10, -40, -70] Для того, чтобы перебрать индексы последовательности, используйте совместно range() и len(): >>> a = [’У’, ’Марии’, ’есть’, ’маленькая’, ’овечка’] >>> for i in range(len(a)): ... print i, a[i] ... 0 У 1 Марии 2 есть 3 маленькая 4 овечка Дотошный читатель может заметить, что если нужно перебирать числа большого диапазона, создание списка будет неоправданно, а в некоторых случаях просто не хватит памяти: >>> l=range(10000000) Traceback (innermost last): File "<stdin>", line 1, in ? MemoryError Действительно, если мы не собираемся изменять список, достаточно создать псевдоспи- сок — объект, для которого мы можем получить значения “элементов”, но не можем изменить их или порядок их следования. Для этих целей в языке Python предусмотрена функция xrange(): >>> xrange(5, 10) (5, 6, 7, 8, 9) >>> xrange(0, 10, 3) (0, 3, 6, 9) >>> xrange(-10, -100, -30) (-10, -40, -70) >>> a = [’У’, ’Марии’, ’есть’, ’маленькая’, ’овечка’] >>> for i in xrange(len(a)): ... print i, a[i] ... 0 У 1 Марии 2 есть 3 маленькая 4 овечка
|
|