直接在集合上迭代,或使用迭代器

时间:2014-10-31 13:53:57

标签: python string python-3.x iterator

我注意到我可以做两件事,结果相同

foo = """
  this is 
  a multi-line string.
"""

for line in foo.splitlines():
  pass

for line in iter(foo.splitlines())
  pass

有什么区别? 我应该选择哪一个?

1 个答案:

答案 0 :(得分: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())