Python高级特性-迭代器和生成器

迭代器

Python中可迭代对象(iterable)通俗指可直接作用与For循环的数据对象,如Python中的集合数据类型,字符串(str),列表(list),元组(tuple),集合(set),字典(dictionary)。

而迭代器(iterator)不仅是可迭代对象,而且可以被next()函数调用并不断返回下个值。

 

迭代器生成

通过iter()函数生成迭代器对象

iter1 = iter([1,2,3,4])

print(iter1)  output:<list_iterator object at 0x10d0de0b8> #生成列表的迭代器对象

next(iter1)  output:1 #通过next()函数调用迭代器

#通过for循环调用迭代器

for i in iter1:

  print(i) 

output:2 3 4

 

 

生成器

不用创建完整的list,在Python中,一边循环一边计算的机制,成为生成器。

 

创建生成器(通过元组列表推导式

g = (i*i for i in range(5))

print(g)  output: <generator object <genexpr> at 0x10d09deb8>

g.next() output:1 #通过next()方法调用生成器

for i in g: #通过for循环的方式调用生成器

  print(i)

output:4 9 16

 

创建生成器(通过函数中yield关键字

def seq(max):

  x = 1

  d = 2

  while x < max:
    yield(x) 

    x += d

seq(20)  output:<> <generator object seq> #通过yield关键字创建了生成器对象

next(seq(5))  output:1

 

2020-03-18 16:00  

posted @ 2020-03-18 16:01  傅余生  阅读(134)  评论(0编辑  收藏  举报