下面我将分别介绍迭代器和生成器的使用示例:
迭代器示例:
迭代器是一种对象,它可以在遍历时逐个访问元素而不需要将所有元素加载到内存中。下面是一个简单的迭代器示例,该迭代器生成斐波那契数列的前 n 个数字:
class FibonacciIterator:
def __init__(self, n):
self.n = n
self.current = 0
self.next_num = 1
self.count = 0
def __iter__(self):
return self
def __next__(self):
if self.count >= self.n:
raise StopIteration
result = self.current
self.current, self.next_num = self.next_num, self.current + self.next_num
self.count += 1
return result
# 使用迭代器生成斐波那契数列的前 10 个数字
fibonacci_iter = FibonacciIterator(10)
for num in fibonacci_iter:
print(num)
生成器示例:
生成器是一种特殊的函数,它可以通过 yield
关键字来暂停函数的执行,并返回一个值。每次调用生成器的时候,它会从上一次暂停的地方继续执行。下面是一个生成器示例,用于生成斐波那契数列的前 n 个数字:
def fibonacci_generator(n):
current, next_num = 0, 1
count = 0
while count < n:
yield current
current, next_num = next_num, current + next_num
count += 1
# 使用生成器生成斐波那契数列的前 10 个数字
fibonacci_gen = fibonacci_generator(10)
for num in fibonacci_gen:
print(num)
以上两个示例都能生成斐波那契数列的前 10 个数字,但一个是使用迭代器实现的,另一个是使用生成器实现的。这两种方式都可以按需生成数据,而不需要一次性加载所有数据到内存中。
标签:迭代,python,self,生成器,next,current,num From: https://www.cnblogs.com/chentiao/p/18091777