码迷,mamicode.com
首页 > 其他好文 > 详细

学习日记0804迭代器

时间:2018-08-07 22:57:10      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:第一步   enum   限制   val   类型   callable   拼接   停止   next   

大前提:生成器就是一种自定义的迭代器,它的本质就是一种迭代器

但凡函数体内包含一个yield关键字的,调用函数不会执行函数体代码,会得到一个返回值,该返回值就是一个生成器对象

# def func():
# print(‘first‘)
# yield 1
# print(‘second‘)
# yield 2
# print(‘third‘)
# yield 3
# print(‘fourth‘)
#
# g=func() 注意:此时函数体代码不执行,此时g就是一个迭代器
# print(g)
# print(g.__iter__().__iter__() is g)
#res1=next(g) 此时函数体代码执行,当遇到一个yield时函数会停止,res1会得到一个yield后的返回值
强调:针对表达式形式的yield的使用,第一步必须让函数先暂停到一个yield的位置,才能进行传值操作
总结:
1 生成器提供了一种自定义的迭代器的表达方式
2 yield可以保存函数的运行状态
3 yield 相比于 return:
  相同点:都可以返回值,返回值的类型和个数没有限制
  不同点:yield可以返回多个值,而return只能放回一个值函数就结束了
生成器表达式:
g = (i**2(返回值) for i in range(12) if i>3)
内置函数:
  abs 取绝对值
  all(多个值) 其中的值全为真则返回真,否则返回假
  any(多个值) 其中的值有一个值为真则返回真
  bool() 只有里面的值为真返回真,为假则返回假
  encode() 将二进制编码
  decode() 将二进制解码
  type() 返回里面数据的类型
  callable() 判断是否为内置函数
  chr() 在ascll编码表中查找对应的字符
  ord() 在ascll编码表中查找字符对应的编码
  import 导入模块的操作
  divmod(x,y) 会返回两个值(取整,取余)
  enumerate() 会依次得到索引和值
  eval() 会将字符中的列表转换成列表
  set() 取出元组中的集合
  slice() 按照索引取值的一种方式
  zip() 将一个字符串与一个列表中的元素拼接
  


学习日记0804迭代器

标签:第一步   enum   限制   val   类型   callable   拼接   停止   next   

原文地址:https://www.cnblogs.com/jianhaozhou/p/9439373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!