可迭代对象(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