Python学习笔记------迭代器和生成器

24 篇文章 0 订阅
24 篇文章 0 订阅
# 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个异常以终止迭代(只能后退不能前进)
# x = 'hello'
# # 遵循迭代器协议,把字符串转化为可迭代对象
# iter_test = x.__iter__()
#
# print(iter_test.__next__())
# print(iter_test.__next__())
# print(iter_test.__next__())
# print(iter_test.__next__())
# print(iter_test.__next__())


# 生成器即一种数据类型,这种数据类型内部自动实现了迭代器协议(其他数据类型需要调用自己内部的iter方法),所以生成器也是可迭代对象
# def test():
#     yield 1
#
# print('生成器表达式',test())

# 三元表达式
# name = 'ads'
# name = 'sasja'
# test = 'SB' if name == 'ads' else '帅哥'
#
# print(test)
# 列表解析
#
# aglist = []
#
# for i in range(10):
#     # 字符串拼接
#     aglist.append('鸡蛋%s' %i)
#
# print(aglist)
#
# l = ['鸡蛋%s' %i for i in range(10)]
# print(l)
# # 三元表达式 '鸡蛋%s'  for i in range(10)  if i > 5 ,主体为for 循坏
# ll = ['鸡蛋%s' %i for i in range(10) if i > 5]
# # ll = ['鸡蛋%s' %i for i in range(10) if i > 5 else i]#没有四元
#
# print(ll)

# l3 = ('鸡蛋%s' %i for i in range(10))
# # 方法名即地址
# print('生成器函数形式',l3)
# print(l3.__next__())
# print(l3.__next__())

# def  testSheng():
#
#      print('我的第1次打印=========')
#      yield '1'
#
#      print('我的第2次打印=========')
#      yield '2'
#
#      print('我的第3次打印=========')
#      yield '3'
#
#      print('我的第4次打印=========')
#      yield '4'
#
#
# test = testSheng()
# print(test.__next__())
# print(test.__next__())
# print(test.__next__())
# print(test.__next__())
# 生成器的好处   1:执行效率高  延迟计算,一次返回一个结果,也就是说不会一次生成所有的结果
# 2:有效提高代码的可读性


# import time
# def product_baozi():
#     for i in  range(100):
#         time.sleep(3)
#         yield ('一屉包子%s' %i)
#
#
# baozi = product_baozi()
# # 不允许用下面的方式调用方法  product_baozi()调用结束后,下次再调用相当于重新执行
# # print(product_baozi().__next__())
# print(baozi.__next__())
# print(baozi.__next__())
# print(baozi.__next__())
# print(baozi.__next__())
# print(baozi.__next__())
# print(baozi.__next__())






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值