Уведомления

Группа в Telegram: @pythonsu

#1 Июль 18, 2012 10:34:06

Shogun
Зарегистрирован: 2012-07-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

range(len(x)) использование в цикле

Начал изучать питон и возник вопрос. В книге есть пример с циклом:

a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
print(a[i])

И не очень понятно как работает range(len(a)). Если len(a) возвращает 5, а range(5) = (0, 5). То как так выходит, что возвращаются значения из списка “а”, а не 0, 1, 2, 3, 4?

Офлайн

#2 Июль 18, 2012 11:15:56

Saturn
От:
Зарегистрирован: 2012-03-22
Сообщения: 164
Репутация: +  0  -
Профиль   Отправить e-mail  

range(len(x)) использование в цикле

Это можно и так записать

a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in a:
      print i



Офлайн

#3 Июль 18, 2012 11:17:22

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

range(len(x)) использование в цикле

Потому что вы обращаетесь к элементам последовательности по индексу:

>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> a[0]
'Mary'
>>> a[4]
'lamb'
>>>

Вообще это не очень хороший паттерн с точки зрения питона. Обычно делают так:
myList = ['Mary', 'had', 'a', 'little', 'lamb']
for elem in myList:
    print elem

И не очень понятно как работает range(len(a)). Если len(a) возвращает 5, а range(5) = (0, 5)
range(5) = [0, 5) = 0, 1, 2, 3, 4



Офлайн

#4 Июль 18, 2012 11:55:25

Shogun
Зарегистрирован: 2012-07-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

range(len(x)) использование в цикле

GaiveR

Потому что вы обращаетесь к элементам последовательности по индексу:
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> a[0]
'Mary'
>>> a[4]
'lamb'
>>>

Понял, т.е. по другому это - len(a) возвращает нам длину списка int, а потом range() нам это число раскладывает - от и до. А после перебираем циклом.

Спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version