码迷,mamicode.com
首页 > 编程语言 > 详细

Python菜鸟之路:Python基础-生成器和迭代器

时间:2016-06-17 00:49:02      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

一、迭代器

  迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往前不会后退。

1. 迭代器优点

  对于无法随机访问的数据结构(比如set)而言,迭代器是唯一的访问元素的方式。本质:迭代器就是生成一个有next()方法的对象,而不是通过索引来计数。

  不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件,或是斐波那契数列等等。这个特点被称为延迟计算或惰性求值(Lazy evaluation)。

  提供了一个统一的访问集合的接口,只要定义了__iter__()方法对象,就可以使用迭代器访问。

2. 两个基本的方法

  1) next方法:返回迭代器的下一个元素

a = {2,3,4,}
b = iter(a)
print(b.__next__())
print(b.__next__())
print(b.__next__())
print(b.__next__())

out:
2
3
4

Traceback (most recent call last):
  File "practice3.py", line 216, in <module>
    print(b.__next__())
StopIteration

# Ps:从上述例子可以看出,迭代器中元素被访问完毕,如果再次调用__next__方法,会提示StopIteration

  2) __iter__方法:返回迭代器对象本身

a = {2,3,4,}
b = iter(a)
print(b.__iter__())

out: <set_iterator object at 0x0000000000B377E0>

  迭代器对象的访问方法,一般为for循环,循环取出可迭代对象中的元素。

 

二、生成器

  生成器是特定的函数,允许你返回一个值,然后“暂停”代码的执行,稍后恢复。生成器使用了“延迟计算”,所以在内存上面更加有效。带有 yield 的函数在 Python 中被称之为 generator,即生成器。

 

Python菜鸟之路:Python基础-生成器和迭代器

标签:

原文地址:http://www.cnblogs.com/jishuweiwang/p/5592579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!