一、迭代器協議
1、迭代器原理:
strtest = "hello"
# for循環遍歷機制原理
itertest = strtest.__iter__()
print("使用__iter__函數:", itertest)
print("使用next函數:", itertest.__next__())
print("使用next函數:", itertest.__next__())
print("使用next函數:", itertest.__next__())
print("使用next函數:", itertest.__next__())
print("使用next函數:", itertest.__next__())
# for循環示例(可遍歷任意可迭代對象)
for item in strtest:
print("使用for循環遍歷:", item)
# while循環示例(只能遍歷有序的序列:字符串,元組,列表等有下標的)
index = 0
while index < len(strtest):
print("使用while循環遍歷:", strtest[index])
index += 1
注意不要超出迭代器的有序序列的索引:
2、無序序列錯誤示例:
x = 0
settest = {1, 2, 3}
while x < len(settest):
print(settest[x])
x += 1
3、無序序列正確示例:
# 集合迭代
settest = {1, 2, 3}
set_iter = settest.__iter__()
set_next = set_iter.__next__()
print("集合的迭代機制settest.__iter__().__next__():", set_next)
for item in settest:
print("使用for循環遍歷集合:", item)
# 字典迭代
dic_test = {"name": "wangdoudou", "age": 18}
dic_iter = dic_test.__iter__()
dic_next = dic_iter.__next__()
print("字典的迭代機制dic_test.__iter__().__next__():", dic_next)
for item in dic_test:
print("使用for循環遍歷字典:", item)
# 文件迭代
file = open("d.txt", "r+", encoding="utf-8")
file_iter = file.__iter__()
file_next = file_iter.__next__()
print("文件的迭代機制file.__iter__().__next__():", file_next)
# 用while循環模擬for循環
set_test = {4, 5, 6}
setiter = set_test.__iter__()
while True:
try:
print("使用while模擬for循環拿到的數據是:", setiter.__next__())
except StopIteration:
print("迭代完畢,終止循環")
break