#!/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
# 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):
# 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)
python生成器及迭代器
迭代器是訪問集合元素的一種方式 迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和next 字串,列表或元組物件都可用於建立迭代器 特點 訪問者不需要關心迭代器內部的結構,僅需通過nex...
生成器 迭代器
最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...
迭代器,生成器
迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...