Python for循环如何工作?

6 python for-loop iterable

我习惯于for循环的C++方式,但Python循环让我感到困惑.

for party in feed.entry:
    print party.location.address.text
Run Code Online (Sandbox Code Playgroud)

这里for party in feed.entryfor party in feed.entry.它意味着什么以及它如何实际起作用?

ymv*_*ymv 23

feed.entry是feed的属性,它的值是(如果不是,这段代码会失败)对象实现迭代协议(例如数组)并且有iter方法,它返回迭代器对象

Iterator有next()方法,返回下一个元素或引发异常,所以python for循环实际上是:

iterator = feed.entry.__iter__()
while True:
    try:
        party = iterator.next()
    except StopIteration:
        # StopIteration exception is raised after last element
        break

    # loop code
    print party.location.address.text
Run Code Online (Sandbox Code Playgroud)

  • +1,因为给出相同的低级代码通常是最好的解释; 希望我只能给+0.9,因为第一行应该是`iter(feed.entry)`(大多数时候你直接调用一个特殊的方法而不是通过内置你做错了,尽管有例外情况;-). (11认同)

Dra*_*sha 6

feed.entry是允许迭代的东西,包含某种类型的对象.这大致类似于c ++:

for (feed::iterator party = feed.entry.begin(); party != feed.entry.end(); ++party) {
   cout << (*party).location.address.text;
}
Run Code Online (Sandbox Code Playgroud)


Bar*_*ski 5

要将我的0.05 $添加到之前的答案,您可能还需要查看枚举内置函数

for i, season in enumerate(['Spring', 'Summer', 'Fall', 'Winter']):
    print i, season

0 Spring
1 Summer
2 Fall
3 Winter
Run Code Online (Sandbox Code Playgroud)