• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

桃花源主

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

迭代器

可迭代对象:从语法形式上讲,内置有__iter__方法的对象都是可迭代对象,字符串,列表,元组,字典,集合,打开的文件都是可迭代对象

1.迭代对象

s={1,2,3,4,5}
i = iter(s)   #本质就是在调用s.__iter__(),返回s的迭代器对象i
next(i)   1
next(i)   2
next(i)   3
......

2.for循环原理

有了迭代器后,可以不依赖索引迭代值了,使用while循环的实现方式如下:

goods = ['mac','lenovo','acer','dell']
i=iter(goods)   每次都需要重新获取一个迭代对象
while True:
	try:
		print(next(i))
	except StopIteration:   #捕捉异常终止循环      
		break

for循环又称为迭代循环,in后可以跟任意可迭代对象,上述while循环可简写为:

goods = ['mac','lenovo','acer','dell']
for item in goods:
	print(item)

3.优缺点

3.1优点

为序列的非序列类型提供了一种统一的迭代取值方式

3.2缺点

除非取尽,否则无法获取迭代器的长度

小结

  • 迭代器主要是为一些没有下标索引的对象提供的方法(迭代对象),给迭代对象增加了.__iter__方法,变成了迭代器。
  • while循环称为条件循环,for循环称为迭代器循环。
  • 字符串,列表,元组,集合。。。他们都是可迭代对象,但是不是迭代器对象(他们没有.__next__方法),但是打开的文件对象是迭代器,也是可迭代对象

posted on 2021-01-31 21:11  桃花源主  阅读(63)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3