1. 程式人生 > >叠代器及生成器

叠代器及生成器

元表 ext next font ret 就是 ont app python

#!/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)

叠代器及生成器