当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python iter()用法及代码示例


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

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

这些对象在与 for loopwhile loop 等循环结合使用时很有用。

用法:

iter(object, sentinel)

参数:

iter() 函数有两个参数:

  • object- 必须创建其迭代器的对象(可以是,元组, 等等。)
  • 哨兵(可选)- 用于表示序列结束的特殊值

返回:

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

示例 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() 带哨兵参数

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

在这里,我们实现了一个没有StopIteration 条件的自定义可迭代对象。

但是,我们可以使用带有sentinel 参数的iter() 方法来停止迭代。如果从__next__() 返回的值等于sentinel , StopIteration 将被提升,否则将返回该值。

相关用法


注:本文由纯净天空筛选整理自 Python iter()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。