您的位置:

37. Python iter()

Python iter()

更新:

python iter()函数有助于返回迭代器。迭代器是一个对象,这意味着它包含许多可计数的值。迭代器可以遍历所有的值。这些对象对于循环很有用,比如 for 循环、while 循环等等。iter()对象一次迭代一个元素。

 **iter(object, sentinel)** # object can be sets,tuples etc 

iter()参数:

取 2 个参数,其中第一个参数是可以是集合、元组等的对象。

参数 描述 必需/可选
目标 必须创建迭代器的对象 需要
哨兵 用于表示序列结束的特殊值。 可选择的

iter()返回值

如果用户定义的对象没有实现__iter__()__next__()__getitem()__,则会引发类型错误异常。如果还提供了 sentinel 参数,iter()将返回一个迭代器,直到找不到 sentinel 字符。

| 投入 | 返回值 | | 对象和哨兵都给出了 | 迭代程序 |

Python 中iter()方法的示例

示例 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:带有 sentinel 参数的iter()

 class DoubleIt:

    def __init__(self):
        self.start = 1

    def __iter__(self):
        return self

    def __next__(self):
        self.start *= 2
        return self.start

    __call__ = __next__

my_iter = iter(DoubleIt(), 16)

for x in my_iter:
    print(x) 

输出:

2
4
8