Python 基础教程

Python 流程控制

Python 函数

Python 数据类型

Python 文件操作

Python 对象和类

Python 日期和时间

Python 高级知识

Python 参考手册

Python iter() 使用方法及示例

Python 内置函数

Python的iter()函数返回给定对象的迭代器。

iter()函数创建一个可以一次迭代一个元素的对象。

当与for循环while循环等循环耦合时,这些对象很有用。

iter()函数的语法为:

iter(object, sentinel)

iter()参数

iter()函数有两个参数:

  • object-必须创建迭代器的对象(可以是settuples等)

  • sentinel(可选) -用于表示序列结束的特殊值

iter()返回值

  • iter()函数返回给定对象的迭代器对象。

  • 如果用户定义的对象未实现__iter__(),__next__()或__getitem()__,则会引发TypeError异常。

  • 如果还提供了sentinel参数,iter()将返回一个迭代器,直到没有找到标记字符为止。

示例1:Python iter()的工作

# 元音列表
list of vowels
vowels = ['a', 'e', 'i', 'o', 'u']
vowels_iter = iter(vowels)

print(next(vowels_iter))    # 'a'
print(next(vowels_iter))    # 'e'
print(next(vowels_iter))    # 'i'
print(next(vowels_iter))    # 'o'
print(next(vowels_iter))    # 'u'

输出结果

a
e
i
o
u

示例2:自定义对象的iter()

class PrintNumber:
    def __init__(self, max):
        self.max = max

    def __iter__(self):
        self.num = 0
        return self

    def __next__(self):
        if(self.num >= self.max):
            raise StopIteration
        self.num += 1
        return self.num

print_num = PrintNumber(3)

print_num_iter = iter(print_num)
print(next(print_num_iter))  # 1
print(next(print_num_iter))  # 2
print(next(print_num_iter))  # 3

# 引发StopIteration
print(next(print_num_iter))

输出结果

1
2
3
StopIteration

示例3:带有sentinel参数的iter()

with open('mydata.txt') as fp:
    for line in iter(fp.readline, ''):
        processLine(line)

运行该程序时,它将以读取模式打开mydata.txt文件。

然后,for循环中的iter(fp.readline,'')调用readline(读取文本文件中的每一行),直到到达标记字符''(空字符串)为止。

推荐阅读:Python迭代器  Python 内置函数