一、迭代器
迭代器的名称看起来比较陌生,其实在使用列表(list)和元组(tuple)的时候已经使用过,只是在使用的时候是结合for in range取列表中的每一个元素,并对每一个元素进行相应的操作,这种方法称之为迭代,而能够实现这种方法的函数,称之为迭代器。
alist = [1,2,3]
a = iter(alist)
print(type(a))
print(next(a))#第一个元素
print(next(a))#第二个元素
print(next(a))#第三个元素
print(next(a))#第四个元素,错误
结果:
<class 'list_iterator'>
1
2
3
File "C:/test.py", line 9, in <module>
print(next(a))#第四个元素
StopIteration
二、生成器
生成器也是迭代器的一种,如果想构建自己的迭代器,可以利用yield关键字,比如:
def frange(start,end,step):
x = start
while x<end:
yield x
x += step
for i in frange(1,10,0.5):
print(i)
结果:
1
1.5
2.0
2.5
3.0
3.5
4.0
4.5
5.0
5.5
6.0
6.5
7.0
7.5
8.0
8.5
9.0
9.5
可以和range进行对比一下,但是需要注意的是range(start,end,step)函数中,step必须是int类型,否则出错,比如:
for i in range(1,10,0.5):
print(i)
结果:
for i in range(1,10,0.5):
TypeError: 'float' object cannot be interpreted as an integer
正确用法为:
for i in range(1,10,1):
print(i)
结果:
1
2
3
4
5
6
7
8
9
网友评论