迭代器及生成器

#!/user/bin/env python
#--*-- coding:"utf-8--*--"
# 1迭代器必需遵循迭代协议,需要使用iter转换为遵循迭代协议,必须能够使用next方法。for相当于进行了iter和next两个方法。把序列
# 转换为了可迭代序列
# 例1
# x="hellow"
# c=x.__iter__()
# print(type(c))
# print(c.__next__())
# print(c.__next__())
# print(next(c))
# 例2
# list1=[1,2,3,4,5,6]
# for l1 in list1:#等同于进行了 list1.__iter__() 和next(list1.__iter__())操作
# print(l1)
# # 在没有迭代器的时候 取出来元素方法
# index=0
# while index <len(list1):
# print(list1[index])
# index += 1
# 对于序列的可以使用这一方法,但是对于一些无序的,比如 字段 元祖 还有文本就不适合上面的这种方法了
# 对于文本可以一样使用此操作,
# 2.生成器两种方式,一种是函数式def,用yield替代return返回迭代值,
# 例1
# import time
# def shenghaizi():
# print("开始生孩子了。。")
# time.sleep(3)
# yield ("我")
# time.sleep(3)
# yield("开始生儿子")
# time.sleep(3)
# yield("开始生孙子")
# res=shenghaizi()
# print(res.__next__())
# print(next(res))
# print(next(res))
# 例2:
# def chibaozi():
# baozi=[]
# for chi in range(1,6):
# baozi.append("开始吃包子%s" %chi)
# return baozi
# bzs=chibaozi()
# print(bzs)
# import time
# def mbz():
# for iz in range(1,6):
# print("开始蒸包子。。")
# yield "开始蒸第%s笼" %iz
# print("开始卖包子")
# time.sleep(3)
# res=mbz()
# print(next(res))
# print(next(res))
# print(next(res))
# print(next(res))
# print(next(res))
# 3,三元表达式
# for i in range(1,11):
# if i>5:
# print("开始造第%s个" %i)
# 改造成三元表达式就是下面这个样子
# list1=["开始造第%s个" %i for i in range(1,11)]#只能用三元 可以用两元但是没有四元
# list2=["开始造第%s个" %i for i in range(1,11) if i>4]
# print(list1)
# print(list2)

猜你喜欢

转载自www.cnblogs.com/Centwei/p/10283633.html