python - 内置的 iter() 有什么意义?

标签 python

使用 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/

相关文章:

python - 按用户外键搜索类

python - 打印图像时,什么决定了它在页面上的显示大小?

php - 从 php 调用时 python 输出无法正确输出

python - 如何在 Python pathlib.Path 前加上另一个路径?

python - 如何在 Python 中设置像素的 alpha 值

python - 在 Python 中调用另一个类的方法

python - 1045、 "Access denied"使用两个 python 文件,一个有效,另一个 "Access denied"?

python - Arch Nginx Uwsgi 未加载应用程序

python - 占位符在 django-cms 中不起作用

python - Jinja2 for 循环条件