Python-63-疊(迭)代(Iter)使用方法

疊(迭)代(Iter):

  • 目的通常是為了接近所需求的目標或結果。
  • 每一次對過程的重複被稱為一次"疊代",
  • 每一次疊代得到的結果通常會被用來作為下一次疊代的初始值。

  • 使用疊代方式讀取字串->next 一次讀一個字元
  • 使用疊代方式讀取陣列->next 一次讀一筆資料
  • 在類別中使用疊代

 

 

使用疊代方式讀取字串->next 一次讀一個字元

mypc = "computer"

for x in mypc:
    print(x)


print("--------------------------")
my3c = "notebook"

abc = iter(my3c)

print(next(abc)) #n
print(next(abc)) #o
print(next(abc)) #t
print(next(abc)) #e
print(next(abc)) #b
print(next(abc)) #o
print(next(abc)) #o
print(next(abc)) #k

 

看看效果​

使用疊代方式讀取陣列->next 一次讀一筆資料

mycomputer = ("cpu","ram","disk")
for zzz in mycomputer:
    print(zzz)

mycomputer2 =("cpu2","ram2","disk2")
#請用Iter的方式讀出mycomputer2的值

yyy = iter(mycomputer2)

print("--------------------------")
print(next(yyy)) #cpu2
print(next(yyy)) #ram2
print(next(yyy)) #disk2

 

看看效果

搭配for迴圈只讀前兩筆資料 
for _ in range(2):
   print(next(yyy)) #只讀前兩筆

如果key值為空可以使用底線 _ 

 

 

在類別中使用疊代

#有__iter__ 就一定有__next__  (它們是一組的)


class mydouble:#類別
    def __iter__(self): #疊代(類別變數)
        self.num = 2 #類別裡面的num(變數)等於2
        return self #返回所有的類別變數 #2
    
    def __next__(self):
        zz = self.num  #zz =2
        self.num += 2 
        return zz #>>2 >>4 >>6  >>......

#物件    = 呼叫類別 
calldouble = mydouble()#呼叫類別

#變數 = 疊代(物件)
calliter = iter(calldouble)

#使用next讀
print(next(calliter))#2
print(next(calliter))#4
print(next(calliter))#6
print(next(calliter))#8
print(next(calliter))#10
print(next(calliter))#12
print(next(calliter))#14

看看效果

 

Yiru@Studio - 關於我 - 意如