python基础-迭代器

存储方式与遍历

# 记录的存取方式有两种:一种是顺序存储,另一种是链接存储
# 对于顺序存储的记录可以根据其下标找到对应的记录,而链接存储(拿单链表为例)
# 则必须找到其前一个记录的位置才能够找到本记录。
# 所以for循环便于访问顺序存储的记录而迭代则更适用于链接存储的记录

  

可迭代对象与迭代器

#d首先是一个可迭代对象,遍历无序的无下标的值,不依赖索引
#python的for循环包含了迭代器,自动调用工厂函数iter(),使之变成迭代器,然后调用了next(),然后处理了越界的异常,
#然而用while并没有包含迭代器,需要手动完成这一系列操作,手动变成迭代器,手动调用next,手动处理异常
#所以明确迭代器的iter() 方法,next()方法,异常处理方法才可以搞一个迭代器


from collections import Iterable,Iterator
#while写法
d={"a":1,"b":2,"c":3}
print(isinstance(d,Iterable))   #d是一个可迭代对象,返回True
d1=iter(d)   #可迭代对象不是迭代器,iter()就是让可迭代对象变成迭代器,好了已经变成迭代器了
print(isinstance(d1,Iterator))  #d1是一个迭代器,返回True,迭代器有next()方法


while True:
    try:
        print(next(d1))  #手动调用next
    except StopIteration:
        break

print("--------------------------")
#for 写法(for内置了迭代器)
for key in d:
    print(key)



# 迭代器是一个支持next()操作的对象,执行一个next(),返回一个元素,
# 所有元素被返回以后,生成一个StopIteration异常。
# Python的for循环不但可以用来遍历list,还可以用来遍历文件对象。

  



转载于:https://www.cnblogs.com/adamans/articles/7496029.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值