您的位置:首页 > 编程语言 > Python开发

Python--day4

2016-01-27 15:05 573 查看
1.迭代器原理及使用

  迭代器&生成器

迭代器

迭代器是访问集合元素的一种方式.且带起对象从集合的第一个元素开始访问,知道所有的元素被访访问玩结束,迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退,另外迭代器的一大优点是不要求事先准备好整个迭代过程,中所有的元素,迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元祖可以不存在或者被销毁,这个特点使得他特别适合用于便利一些巨大的或是无限的集合,比如几个G的文件.

  特点:

  1.访问者不需要关心迭代器内部的结构,仅需要通过next()方法不断取下一个内容.

  2.不能随机访问集合中的某个值,只能从头到尾依次访问

  3.访问到一半时不能方回退

  4.便于循环比较大的数据集合,节省内存.

迭代器不能通过下标的方式来取值的,

__author__ = 'Administrator'
def cash_money(amount):
while amount > 0:
amount -=100
yield 100
print("aaasdfasdfsadfaaaa")
# print(" mei qian le!!!")

atm = cash_money(500)
print(type(atm))
print(atm.__next__())
print(atm.__next__())
print(atm.__next__())
print(atm.__next__())
print(atm.__next__())
print(atm.__next__())
--------------------------------------------------------------------------------
#生面定义了一个函数,函数调用的时候返回的是迭代器(generator),然后函数中包含了 yield 语法 所以就变成了生成器
#生成器在调用的时候就用到了next()

#输出:
#输出的是函数返回的 类型
<class 'generator'>
#提示第一次取钱
100
#当第二次取钱的时候就会执行print 中的内容,由此可以说明,当第一次执行完之后,程序并没有结束,
aaasdfasdfsadfaaaa
100
aaasdfasdfsadfaaaa
100
aaasdfasdfsadfaaaa
100
aaasdfasdfsadfaaaa
100
aaasdfasdfsadfaaaa
#当打印到第五次的时候表示已经没有值了 所以会有了以下的提示
Traceback (most recent call last):
File "E:/python/day1/day4/迭代器.py", line 16, in <module>
print(atm.__next__())
StopIteration


生成器小案例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: