存储方式与遍历
# 记录的存取方式有两种:一种是顺序存储,另一种是链接存储
# 对于顺序存储的记录可以根据其下标找到对应的记录,而链接存储(拿单链表为例)
# 则必须找到其前一个记录的位置才能够找到本记录。
# 所以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,还可以用来遍历文件对象。