迭代器

迭代器

迭代

指的是重複迭代,每一次迭代都是基於上一次的結果而來的python

迭代器

迭代器指的是迭代取值的工具,它能夠迭代取值工具

可迭代對象

str , list , dict , set , tuple , 文件open('a.txt')code

全部的序列類型,凡是內部有.__iter__()內置方法的都是可迭代對象

獲取迭代器

可迭代對象.__iter__()  獲得的返回值就是「迭代器對象」

迭代器如何取值

迭代器對象.__next__()  每執行一次都會從跌打器對象中去走一個值
s = "迭代器"
str_iter = s.__iter__()
print(str_iter.__next__())
print(str_iter.__next__())
print(str_iter.__next__())
# print(str_iter.__next__())  # 多執行一次就會報錯StopIteration,由於迭代器中的值已經取完了
>>>
迭
代
器

可迭代對象 vs 迭代器對象

一、獲取可迭代對象:直接定義序列類型(str , list , tuple , dict , set , f)對象

特色:內置有__ iter __()索引

二、獲取迭代器對象:經過可迭代對象調用獲得返回值,可迭代對象.__ iter __()內存

特色:內置有__ next __()it

迭代器對象的優勢

優勢:io

​ 一、不依賴索引迭代取值for循環

​ 二、節省內存空間ast

缺點:

​ 一、取指定某個值麻煩

​ 二、每次取值都要從第一個值開始,沒法經過索引取值

​ 三、沒法獲取長度

for循環原理

語法:for i in 可迭代對象:

in:可迭代對象--->內部會自動調用.__ iter__()--->迭代器對象

用 for i in 可迭代對象:就是調用迭代器對象.__ next__()

for循環內部也會有一個捕獲異常機制,一旦遇到異常也會中止取值。

list1 = [1, 2, 3, 4]
for line in list1:  # list1是可迭代對象 ----> 內部會自動調用.__iter__() ---> 迭代器對象
    # 迭代器對象.__next__()
    print(line)

迭代器本質上是一個可迭代對象

文件既是可迭代對象,也是迭代器對象

可迭代對象不必定是迭代器對象

try: / except StopIteration:

迭代器取值當取完後並不知道,多取一次就會報錯,所以咱們用try:和except StopIteration:防止報錯

# 若是沒有使用try
list1 = [1, 2, 3, 4]
list1_iter = list1.__iter__()
while True:
    print(list1_iter.__next__())
>>>
1
Traceback (most recent call last):
2
3
  File "E:/Python/練習/迭代器.py", line 25, in <module>
4
    print(list1_iter.__next__())
StopIteration
# 使用try
list1 = [1, 2, 3, 4]
list1_iter = list1.__iter__()
while True:
    try:
        print(list1_iter.__next__())
    except  StopIteration:
        break
>>>
1
2
3
4
相關文章
相關標籤/搜索