迭代 Python 循环中的 "break" 如何工作

How "break" in iterative Python loop works

这里是新手,请多多包涵...我已经尝试在 Python.org 和 Google 上对此进行研究,但我仍然不清楚这里发生了什么。

基本问题是:

  1. break在下面的迭代循环中做了什么?

  2. 为什么两个 if 语句都有效,即使一个使用“>=”而另一个使用“<=”?

  3. 为什么提要中解析的项目数不同?第一个解析了 5 个项目,第二个解析了 6 个项目。

脚本 # 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

脚本 #1 输出:

Sights and Sounds: Flames vs. Ducks - Game 2

Sights and Sounds: Wild vs. Blackhawks - Game 2

Mic'd Up: Kucherov nets his third goal

Mic'd Up: Kucherov nets his second goal

Sights and Sounds: Capitals vs. Rangers - Game 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

脚本 #2 输出:

Sights and Sounds: Flames vs. Ducks - Game 2

Sights and Sounds: Wild vs. Blackhawks - Game 2

Mic'd Up: Kucherov nets his second goal

Mic'd Up: Kucherov nets his second goal

Sights and Sounds: Capitals vs. Rangers - Game 2

The best Sights and Sounds from Round 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获取索引的值,itemd.entries中赋值相应的项。第一个循环 body 看起来像这样:

if index >= 5:
    break
print item.title

这表示,"if the index is greather than or equal to 5, exit the loop"。所以这将打印索引为 0、1、2、3、4 或 5 的项目的标题,然后退出循环(即打印前六个条目)。

第二个循环 body 如下所示:

if index <= 5:
    print item.title

这表示,"if the index is less than or equal to five, print the item's title"。这将打印前六个条目,但是循环将继续遍历所有剩余的条目而不打印它们