首页 > 其他 > 详细

【迭代器-生成器】

时间:2020-06-04 14:20:28      阅读:49      评论:0      收藏:0      [点我收藏+]

可迭代对象:内部含有“__iter__”方法的数据就是可迭代对象(str,list,tuple,set,dict,range(),文件句柄)

迭代器:内部含有"__iter__"方法并且含有“__next__”方法的就是迭代器(1.非常节省内存,2.满足惰性机制,3一条路走到黑)

字符串不是迭代器,只是可迭代对象

# # print(dir(s1))
# print(‘__iter__‘ in dir(s1))

# f1 = open(‘regsiter‘, encoding=‘utf-8‘)
# print(‘__iter__‘ in dir(f1))
# print(‘__next__‘ in dir(f1))
# f1.close()

# l1 = [1, 2, 3, ‘alex‘]
# iter1 = l1.__iter__()
# while 1:
# try:
# print(iter1.__next__())
# except StopIteration:
# break

# 利用while循环模拟for循环 的机制。
 1, 将可迭代对象转化成迭代器
 2, 利用next 进行取值
 3, 利用异常处理终止循环。

生成器:自己用python代码写的迭代器,本质就是迭代器

1.函数是写法2.生成器表达式

def func1():
yield "你 够可以的"
yield 2
g=func1()#生成器对象
print(g)
print(g.__next__())
print(g.__next__())

return:结束函数,给函数返回值。yield:不会结束生成器函数,next对应一个yield进行取值

# 列表推导式
# 凡是用列表推导式能构建的数据,python代码都可以构建,列表推导式不能构建的数据,python代码异可以构建

 

【迭代器-生成器】

原文:https://www.cnblogs.com/bonnyxinxin/p/13042247.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!