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

 

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