迭代器和生成器

一、迭代器

迭代器的名称看起来比较陌生,其实在使用列表(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
posted @ 2020-02-25 23:07  xyztank  阅读(80)  评论(0)    收藏  举报