关键词

python学习之可迭代对象、迭代器、生成器

Python学习之可迭代对象、迭代器、生成器

可迭代对象

可迭代对象(iterable)是指实现了__iter__()方法的对象,可以使用for in语句进行多次迭代。

例如,Python中的列表(list)、元组(tuple)、字典(dict)、字符串(str)等都是可迭代对象,因为它们都实现了__iter__()方法:

lst = [1, 2, 3]
for i in lst:
    print(i)

输出结果如下:

1
2
3

迭代器

迭代器(iterator)是指实现了__iter__()__next__()方法的对象,它可以逐个返回元素,直至没有元素可返回为止。

例如,自己定义一个迭代器类,实现一个数字递增的迭代器:

class MyIterator:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.end:
            self.current += 1
            return self.current - 1
        else:
            raise StopIteration

for i in MyIterator(0, 5):
    print(i)

输出结果如下:

0
1
2
3
4

生成器

生成器(generator)是一种特殊的迭代器,它可以通过函数实现,能够保存函数执行的状态。生成器使用yield关键字来迭代,每次调用yield时,都会暂停函数执行并返回一个值。

例如,定义一个生成器函数实现斐波那契数列:

def fib(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a+b

for i in fib(5):
    print(i)

输出结果如下:

0
1
1
2
3

再举一个例子,定义一个生成器函数,打印出字符串中的每个字符:

def char_iter(s):
    for c in s:
        yield c

for c in char_iter("hello"):
    print(c)

输出结果如下:

h
e
l
l
o

总结

通过本文学习,我们了解了什么是可迭代对象、迭代器、生成器,并给出了相应的示例。在实际开发中,我们可以使用这些工具来简化代码,并提高效率。

本文链接:http://task.lmcjl.com/news/14934.html

展开阅读全文