我习惯于for循环的C++方式,但Python循环让我感到困惑.
for party in feed.entry:
print party.location.address.text
Run Code Online (Sandbox Code Playgroud)
这里for party in feed.entry在for 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)
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)
要将我的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)