2014-10-31 50 views

回答

4

for语句在您试图迭代的对象上隐式调用iter()。然后第二种形式是多余的,两次做同样的工作,没有任何好处。

可能是一个优势之前你循环存储iter()迭代

foo_iter = iter(foo.splitlines()) 
for line in foo_iter: 
    next_line = next(foo_iter, '') 
    print(next_line.rstrip()) 
    print(line.rstrip()) 
+0

在这种情况下,我认为这是最好使用while循环。 for循环意味着将每个元素逐个迭代给我。虽然我想在这个特定的例子中,将'foo.splitlines()'包装在一个生成器中,每个'next()'调用产生两个元素的元组也是可行的。 – Dunes 2014-10-31 14:04:01

+0

@Dunes:不确定是否有担保。例如,当解析具有重复记录结构的文件时,我经常使用嵌套的for循环,例如,在行上迭代,直到检测到记录结束。使用'while'会使这些代码变得不必要的复杂。 – 2014-10-31 14:06:56

+0

你会得到一个运行你的代码的stopIteration错误 – 2014-10-31 14:08:41