迭代器、生成器

迭代器

# 經過迭代器取值優缺點:

# 優勢:不依賴索引,完成取值
# 缺點:不能計算長度,不能指定位取值(只能從前日後逐一取值)

可迭代對象

'''
可迭代對象: 有__iter__()方法的對象,調用該方法返回迭代器對象

有哪些:str | list | tuple | dict | set | range() | file | 迭代器對象 | enumerate() | 生成器
'''

迭代器對象

'''
迭代器對象: 有__next__()方法的對象,也就是用該方法一次從迭代器對象中獲取一個值,取出一個少一個

有哪些:file | enumerate() | 生成器

重點:
1.從迭代器對象中取元素,取一個少一個,若是要從頭開始去,須要從新得到擁有全部元素的迭代器對象
2.迭代器對象也有__iter__()方法,調用後獲得的是本身自己(當前含義幾個元素,獲得的就只有幾個元素的迭代器對象)
'''

for循環迭代

'''
1.自動獲取被迭代對象的迭代器對象
2.在內部一次一次調用__next__()方法取值;
3.自動完成異常處理
'''

生成器

# 生成器:包含yield關鍵字的函數就是生成器
def my_generator():
    yield 1
    yield 2
    yield 3
g_obj = my_generator()
# my_generator()並不會執行函數體,獲得的返回值就是生成器對象
# 生成器對象就是迭代器對象
r1 = g_obj.__next__() # 1

for v in g_obj:
    print(v)  # 2 | 3
相關文章
相關標籤/搜索