迭代器


'''
ls = [3, 1, 5, 2, 4]

# 通過索引循環取值
count = 0
while count < len(ls):
print(ls[count], end=" ")
count += 1
print()

# 尋求一種不依賴索引,且可以循環取值的方式
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic)

# 通過__iter__()方法獲取dic的一個不用依賴索引的取值容器
box = dic.__iter__()
print(box)
print(box.__next__())

box2 = ls.__iter__()
print(box2)
print(box2.__next__())

box3 = 'abc'.__iter__()
print(box3)
print(box3.__next__())

box4 = {'a', 'b', 'c'}.__iter__()
print(box4)
print(box4.__next__())

with open('1.txt', 'r', encoding='utf-8') as r:
print(r)
print(r.__next__())

dic_box = box
print(dic_box.__next__())


new_box = box.__iter__()
print(new_box.__next__())

print(dic)
dic_box = dic.__iter__()
'''

# 可迭代對象:可以被轉化為不依賴索引取值的容器,這樣的對象就叫做可迭代對象
# -- 對象.__iter__() 來生成不依賴索引取值的容器
# -- 結論:有__iter__()方法的對象都稱之為 可迭代對象

# 迭代器對象:可以通過__next__()的方式進行取值的容器,且取一個少一個
# -- 結論:有__next__()且可以通過__next__()進行取值的容器
# -- 注意:迭代器對象自身也擁有__iter__(), 通過該方法返回的是迭代器對象自身

# 迭代器(for循環):就是用來從可迭代對象中進行取值的循環方法 | 語法:for 變量 in 對象:
# -- 1.通過對象.__iter__()獲取其對應的迭代器對象
# -- for可以操作迭代器對象及可迭代對象,統一寫法,所以迭代器和可迭代對象都有__iter__()
# -- 2.在內部通過迭代器對象的__next__()進行取值,將值賦值給 語法中的變量,取一個少一個
# -- 3.當迭代器對象取完了,在內部自動捕獲異常,並結束循環取值

dic1 = {'a': 1, 'b': 2, 'c': 3} # dic是可迭代對象

# dic1_box = dic1.__iter__() # 通過__iter__()得到的是迭代器對象
# # print(len(dic1_box)) # 迭代器對象沒有len()方法
# while True:
# try:
# print(dic1_box.__next__())
# except StopIteration:
# # print('取完了')
# break

for v in dic1:
print(v)





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM