迭代器及生成器

2022-09-04 22:48:17 字數 1932 閱讀 2710

#!/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直接退出,不繼續執行...