首页 > 编程语言 > 详细

python迭代器

时间:2021-01-30 17:43:24      阅读:20      评论:0      收藏:0      [点我收藏+]
#可迭代对象,方法是否包含‘__iter__‘

s=ashh
print(__next__ in dir(s)) #False
#可迭代器,方法是否包含‘__iter__‘ and ‘__next__‘

with open(文件,encoding=utf-8,mode=w) as f1:
    print(__iter__ in dir(f1) and (__next__ in dir(f1))) #True
##可迭代对象不能直接取值,迭代器可取值。
##可迭代对象可以转成迭代器
obj=s.__iter__()     #obj=iter(s)一样的
print(obj.__next__())  #a
print(obj.__next__())  #s
print(obj.__next__())  #h
aa=[11,33,55]
obj1=iter(aa)
print(next(obj1))  #11

##优点:节省内存
##迭代器可以记住上次循环的位置
obj2=iter(aa)
for i in aa:
    print(next(obj2))
    i+=1
##缺点速度慢
s=0
while s>1:
     try:
         print(next(obj2))
     except StopIteration:
         break
     s+=1
def func():
    yield 3
    yield 4

ret=func()
print(next(ret))  #3   一个next对应一个yield
print(next(ret))  #4
##yield将列表编程迭代器
def func():
    ll=[1,2,3,4]
    yield  from ll
    # yield 1
    # yield  2
ret=func()
print(next(ret))  #1
print(next(ret))  #2

 

 

python迭代器

原文:https://www.cnblogs.com/youngyounglady/p/14349245.html

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