Python迭代器常见用法实例分析
什么是迭代器?
在Python中,迭代器是支持迭代的对象,实现了__iter__
和__next__
方法。其中__iter__
方法返回实例自身,__next__
方法返回序列中的下一个元素。当迭代到序列末尾时,迭代器会引发StopIteration异常。
Python中内置了很多迭代器,如range、list、tuple、set、dict等。同时,也可以自己实现迭代器对象,以便满足自己的需求。
迭代器的优点
迭代器对象可以节约内存空间,因为它每次只生成一个对象,并且只在需要的时候生成返回值。此外,迭代器可以表示逐个访问一个容器的元素的方式。在编写程序时,使用迭代器可以让程序更加简洁优美。
迭代器的使用
迭代器的常见用法包括如下几种:
使用for循环进行迭代
a = [1, 2, 3, 4, 5]
for i in a:
print(i)
使用while循环进行迭代
a = [1, 2, 3, 4, 5]
it = iter(a)
while True:
try:
i = next(it)
print(i)
except StopIteration:
break
使用yield语句生成迭代器对象
def countdown(n):
while n > 0:
yield n
n -= 1
c = countdown(5)
for i in c:
print(i)
使用map函数生成迭代器对象
a = [1, 2, 3, 4, 5]
it = map(lambda x: x + 1, a)
for i in it:
print(i)
示例说明
示例1:生成斐波那契数列
class Fibonacci(object):
def __init__(self, n):
self.n = n
self.count = 0
self.a, self.b = 0, 1
def __iter__(self):
return self
def __next__(self):
if self.count < self.n:
self.a, self.b = self.b, self.a + self.b
self.count += 1
return self.a
else:
raise StopIteration
fib = Fibonacci(10) # 生成斐波那契数列的迭代器对象
for i in fib:
print(i) # 打印前10个斐波那契数列的元素
输出结果:
1
1
2
3
5
8
13
21
34
55
示例2:实现无限循环迭代器
class Circle(object):
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
def __next__(self):
result = self.data[self.index % len(self.data)]
self.index += 1
return result
circ = Circle([1, 2, 3])
for i in range(5):
print(next(circ))
输出结果:
1
2
3
1
2
在该示例中,Circle类的构造函数接收一个列表作为参数,并借助了Python的取模操作来实现了无限循环效果。生成了无限循环的迭代器对象circ,并使用next()
方法获取其元素并打印。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python迭代器常见用法实例分析 - Python技术站