Python之迭代器

一、迭代器協議

 

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章