📜  Python iter()

📅  最后修改于: 2020-09-20 04:14:44             🧑  作者: Mango

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

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

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

iter() 函数的语法为:

iter(object, sentinel)

iter()参数

iter() 函数采用两个参数:

  1. object-必须创建其迭代器的对象(可以是集合,元组等)
  2. sentinel(可选)-用于表示序列结束的特殊值

从iter()返回值

  1. iter() 函数返回给定对象的迭代器对象。
  2. 如果用户定义的对象未实现__iter__()__next__()__getitem()__ ,则会引发TypeError异常。
  3. 如果还提供了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

# raises StopIteration
print(next(print_num_iter))

输出

1
2
3
Traceback (most recent call last):
  File "", line 23, in 
File "", line 11, in __next__
StopIteration

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

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

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

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

推荐读物: Python迭代器