python的iter函数怎么使用

  • Post category:Python

当我们需要遍历一个可迭代对象(比如列表,元组,字符串或生成器)时,可以使用Python中的iter函数将其转化为一个迭代器对象。迭代器可以一个一个返回可迭代对象中的值,当所有值迭代完毕时,会引发StopIteration异常。

下面是使用iter函数的基本语法:

it = iter(iterable)

其中,iterable表示可迭代对象,如列表、元组、字符串等,it表示返回的迭代器对象。

如果我们要迭代打印一个列表中的元素,可以这样写:

lst = [1, 2, 3, 4, 5]
it = iter(lst)
for i in it:
    print(i)

以上代码会遍历列表lst中的所有元素,并打印出来。

当然,我们也可以使用next函数手动逐个遍历:

lst = [1, 2, 3, 4, 5]
it = iter(lst)
while True:
    try:
        i = next(it)
        print(i)
    except StopIteration:
        break

以上代码和之前的例子等价,只是使用了next函数手动逐个遍历。

iter函数不仅可以将列表、元组、字符串等可迭代对象转化为迭代器,还可以自定义迭代器。比如,我们可以自定义一个返回斐波那契数列的迭代器:

class Fib:
    def __init__(self, n):
        self.n = n
        self.current = 0
        self.next = 1

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.n:
            result = self.current
            self.current, self.next = self.next, self.current+self.next
            return result
        else:
            raise StopIteration

fib = Fib(10)
for i in fib:
    print(i)

以上代码自定义了一个Fib类,其__iter__方法返回一个迭代器对象本身,__next__方法实现斐波那契数列的迭代。在主程序中,我们实例化Fib类,并使用for循环遍历打印出斐波那契数列前10项的值。

总结一下,iter函数可以将可迭代对象转化为迭代器,从而实现对可迭代对象的遍历。除了使用for循环遍历,还可以使用next函数手动逐一遍历。也可以自定义迭代器,实现更灵活的迭代器功能。