Python迭代器常见用法实例分析
什么是迭代器?
在Python中,迭代器指的是实现了__iter__()方法
和__next__()方法
的对象,其中__iter__()
返回迭代对象自身,__next__()
返回序列中的下一个值。Python的内置数据结构list
、tuple
、dict
、set
等都是可迭代的对象,其中list
、tuple
可以转化为迭代器对象,而dict
、set
等不能转换为迭代器对象。
迭代器的常见用法
1. 使用迭代器遍历列表、元组等序列类型数据
lst = [1, 2, 3, 4, 5]
iter_lst = iter(lst)
while True:
try:
item = next(iter_lst)
print(item)
except StopIteration:
break
上述代码先通过iter()
函数将列表lst
转换为迭代器对象iter_lst
,然后使用while
循环和try...except...
块不断从iter_lst
中获取下一个值,并打印该值,直到获取到StopIteration
异常,表示迭代结束。
2. 自定义迭代器实现斐波那契数列
class Fibonacci:
def __init__(self, n):
self.n = n
self.a, self.b = 0, 1
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current < self.n:
result = self.a
self.a, self.b = self.b, self.a + self.b
self.current += 1
return result
else:
raise StopIteration
f = Fibonacci(10)
for num in f:
print(num)
上述代码中定义了一个名为Fibonacci
的类,实现了一个可迭代对象。类中的__init__()
方法初始化了类的属性,__iter__()
方法返回了self
,__next__()
方法检查是否达到了指定数量n
,如果没有,返回当前a
的值,并计算新的a
和b
的值,表示下一项斐波那契数列的值。如果已经到达指定数量n
,则引发StopIteration
异常。最后,使用for...in...
语句遍历Fibonacci
对象,输出斐波那契数列的前10项。
总结
迭代器是Python中非常重要的一种数据类型,用于遍历可迭代对象,使得程序更加高效和简洁。迭代器的常见用法包括遍历列表、元组等序列类型数据,以及自定义迭代器实现各种自定义数据结构。以上是两个迭代器的用法示例,但在实际编程中,还有很多其他用法。掌握好迭代器的基础知识,并不断探索和学习,才能更好地使用迭代器提高编程效率。