使用 iter()
,我可以这样做:
>>> listWalker = iter ( [23, 47, 'hike'] )
>>> for x in listWalker: print x,
但无论如何我都可以这样做:
>>> listWalker = [23, 47, 'hike']
>>> for x in listWalker: print x,
它增加了什么值(value)?
最佳答案
除了使用 iter
为实现 __iter__
方法的对象显式获取迭代器之外,还有一种鲜为人知的双参数形式 iter
,它使迭代器重复调用一个函数,直到它返回给定的哨兵值。
for line in iter(f.readline, 'EOF'):
print line
前面的代码将调用 f.read
(例如,对于一个打开的文件句柄 f
),直到它读取包含字符串 EOF< 的一行
。写的差不多了
for line in f:
if line == "EOF":
break
print line
此外,迭代器可以是与它迭代的对象不同的对象。 list
类型也是如此。这意味着您可以创建两个迭代器,这两个迭代器独立迭代同一对象。
itr1 = iter(mylist)
itr2 = iter(mylist)
x = next(itr1) # First item of mylist
y = next(itr1) # Second item of my list
z = next(itr2) # First item of mylist, not the third
然而,文件句柄充当它们自己的迭代器:
>>> f = open('.bashrc')
>>> id(f)
4454569712
>>> id(iter(f))
4454569712
一般来说,iter
返回的对象取决于对象类型实现的__iter__
方法。
关于python - 内置的 iter() 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970143/