2015-05-05 5 views
-1

Новичок здесь, так что медведь со мной ... Я пытался исследовать это на Python.org и Google, мне все еще не ясно, что здесь происходит.Как «перерыв» в итеративных циклах Python работает

Основные вопросы:

  1. Что делать перерыв в следующих итерационных циклах?

  2. Почему оба оператора работают, даже если один использует «>=», а другой использует «<=»?

  3. Почему количество элементов в синтаксическом анализаторе различно? Первый имеет 5 элементов, которые он анализирует, второй анализирует 6 пунктов.

Script # 1:

Import feedparser 
d = feedparser.parse('http://smrss.neulion.com/u/nhl/mrss/sights-and-sounds/vod.xml') 

for index, item in enumerate(d.entries): 
    if index >= 5: 
     break 
    print item.title 

Script # 1 выход:

достопримечательности и звуки: Flames против Утки - Игра 2

достопримечательности и Звуки: Wild vs. Blackhawks - Игра 2

микрофон которого: Кучера сети его третий гол

микрофон которого: Кучера сети его второй гол

достопримечательность и звуки: Кэпиталз против Рейнджерс - Игра 2

сценарий # 2:

Import feedparser 
d = feedparser.parse('http://smrss.neulion.com/u/nhl/mrss/sights-and-sounds/vod.xml') 

for index, item in enumerate(d.entries): 
    if index <= 5: 
     print item.title 

Script # 2 выход:

достопримечательности и звуки: Flames против Ducks - Игра 2

достопримечательности и звуки: Дикие против Блэкхокс - Игра 2

микрофон которого: Кучеров сетками его второй гол

Mic'd Up: Кучеров сетует свой второй гол

Достопримечательности и звуки: Capitals vs.Рейнджерс - Игра 2

Лучшие достопримечательности и звуки от 1-го раунда

+0

Возможный дубликат [для циклического перерыва списка и продолжения] (http://stackoverflow.com/questions/30017958/for-loop-over-list-break-and-continue) – mpolednik

ответ

1

Это цикл, который перебирает записи, имеющиеся в документе http://smrss.neulion.com/u/nhl/mrss/sights-and-sounds/vod.xml:

for index, item in enumerate(d.entries): 

enumerate() вызов здесь трансформирует список, например ['alice', 'bob', 'frank'], в список кортежей, где каждый кортеж содержит индекс соответствующего элемента в списке, например [(0, 'alice'), (1, 'bob'), (2, 'frank')].

В цикле index получает значение индекса, а item присваивается соответствующий элемент от d.entries. Первое тело цикла выглядит следующим образом:

if index >= 5: 
    break 
print item.title 

Это говорит о том, «если индекс greather чем или равен 5, выход из цикла». Таким образом, это напечатает название элементов с индексом 0, 1, 2, 3, 4 или 5, а затем выйдет из цикла (т. Е. Отобразит первые шесть записей).

Второе тело цикла выглядит следующим образом:

if index <= 5: 
    print item.title 

Это говорит о том, «если индекс меньше или равен пяти, печати заголовок элемента». Это будет также напечатать первые шесть записей, но цикл продолжит итерацию по всем остальным элементам без их печати.

+0

Большое спасибо за это объяснение! Что касается второго тела цикла, разве это фактически не выводит первые 6 записей? – AdjunctProfessorFalcon

+0

@DingleJohnson: Да, вы правы. Он будет печатать значения списка с индексами от 0 до 5 с общим количеством 6. – Matthias

+0

Да, я полностью проигнорировал '=' в '<='. Исправлена. – larsks

Смежные вопросы