迭代器簡要筆記內容及其示例
#!/usr/bin/python
# -*- coding utf8 -*-
'''迭代器
重複的過程稱為迭代,每次重複即一次迭代,
並且每次迭代的結果是下一次迭代的初始值
'''# while true: #只滿足重複,因而不是迭代
# print('====>')
#下面才為迭代
# l = [1, 2, 3]
# count = 0
# while count < len(l): # 只滿足重複,因而不是迭代
# print('====>', l[count])
# count += 1
## l = (1, 2, 3)
# count = 0
# while count < len(l): # 只滿足重複,因而不是迭代
# print('====>', l[count])
# count += 1
# s='hello'
# count = 0
# while count < len(s):
# print('====>', s[count])
# count += 1
##為什麼要有迭代器?對於沒有索引的資料型別,必須提供一種不依賴索引的迭代方式
#可迭代的物件:內建__iter__方法的,都是可迭代的物件
# [1,2].__iter__()
# 'hello'.__iter__()
# (1,2).__iter__()
## .__iter__()
# .__iter__()
#迭代器:執行__iter__方法,得到的結果就是迭代器,迭代器物件有__next__方法
# i=[1,2,3].__iter__()
## print(i)
## print(i.__next__())
# print(i.__next__())
# print(i.__next__())
# print(i.__next__()) #丟擲異常:stopiteration
# i=.__iter__()
# print(i.__next__())
# print(i.__next__())
# print(i.__next__())
# print(i.__next__())
dic=
#可迭代物件變成迭代器
i=dic.__iter__()
#用迭代器的方法取出所有
while true:
try:
key = i.__next__()
print(dic[key])
except stopiteration:
break
s='hello'
print(s.__len__()) #等同於len(s)
s=#s.__iter__() #iter(s)
i = iter(s)
print(next(i))
print(next(i))
print(next(i))
print(next(i))
#如何判斷乙個物件是可迭代的物件 還是迭代器物件
# 'abc'.__iter__()
# ().__iter__()
# .__iter__()
# .__iter__()
# .__iter__()
f=open('a','w')
f.__iter__()
#可迭代資料型別有 字串 元組 列表 字典 元組 檔案
from collections import iterable,iterator
print(isinstance('abc',iterable)) #可迭代物件
# print(isinstance(,iterable))
# print(isinstance((),iterable))
# print(isinstance(,iterable))
# print(isinstance(,iterable))
# print(isinstance(f,iterable))
#是可迭代物件 不是迭代器 只有檔案是迭代器
print(isinstance('abc',iterator)) #迭代器測試
# print(isinstance(,iterator))
# print(isinstance((),iterator))
# print(isinstance(,iterator))
# print(isinstance(,iterator))
print(isinstance(f,iterator))
print(isinstance('abc'.__iter__(),iterator)) #執行完_iter_方法就是迭代器
'''可迭代物件:只有__iter__方法,執行該方法得到的迭代器物件
迭代協議:
物件有__next__
物件有__iter__,對於迭代器物件來說,執行__iter__方法,得到的結果仍然是它本身 #檔案型別
'''dic=
# print(dic.items())
# for k,v in dic.items():
# print(k,v)
#for k in dic: #dic執行_iter_方法 i=dic._iter_() k = next(i)
# print(k)
i=iter(dic)
while true:
try:
k=next(i)
print(k)
except stopiteration:
break
'''迭代器優缺點
優點:提供了一種不依賴於下標的迭代方式
迭代器本身來說,更節省記憶體
缺點: 無法按索引取,無法回退 不如序列型別靈活
'''#讀取檔案的節省記憶體方法,readlines預設讀取檔案所有內容到乙個列表
f=open('閉包.py',encoding='utf-8')
## for line in f.readlines():
# print(line)
print(next(f))
#for line in f:
# print(line)
#enumerrate也是迭代器
l=[10000,2,3,4,5]
i=enumerate(l)
print(next(i))
Python迭代器簡介
迭代是訪問集合元素的 種 式。迭代器是 個可以記住遍歷的位置的對 象。迭代器物件從集合的第 個元素開始訪問,直到所有的元素被訪問完結 束。迭代器只能往前不會後退。以直接作 於 for 迴圈的資料型別有以下 種 類是集合資料型別,如 list tuple dict set str 等 類是 gener...
迭代器簡介
迭代器提供了比下標操作更通用的遍歷容器雷元素的方法。其對所有的容器都適用,現代c 程式更加傾向於適用迭代器而不是下標操作。迭代器測試 vector iterator begin v3.begin 指向容器的第乙個元素 vector iterator end v3.end z指向容器末端元素的下乙個 ...
迭代器簡介
迭代器iterator介面同collection map,也是j a集合框架的成員,不同於兩者的是其本身並非用來盛裝其他物件,而是用來遍歷訪問collection集合中的元素。map介面並沒有實現iterator iterator主要有以下方法 boolean hasnext 如果被迭代的集合元素還...