自己不會寫迭代器,只用。
任務:請展示列表中所有的資料。
迭代器想要獲取每個值:反覆呼叫 val = v1.next()
v1 = [11,22,33,44]
# 列表轉換成迭代器
v2 = iter(v1)
result1 = v2.__next__()
print(result1)
result2 = v2.__next__()
print(result2)
result3 = v2.__next__()
print(result3)
result4 = v2.__next__()
print(result4)
result5 = v2.__next__()
print(result5)
"""# v1 = "alex"
# v2 = iter(v1)
# while true:
# try:
# val = v2.__next__()
# print(val)
# except exception as e:
# break
直到報錯:stopiteration錯誤,表示已經迭代完畢。
如何判別乙個物件是否是迭代器:內部是否有__next__方法 。
for迴圈
v1 = [11,22,33,44]
# 1.內部會將v1轉換成迭代器
# 2.內部反覆執行 迭代器.__next__()
# 3.取完不報錯
for item in v1:
print(item)
# 函式
def func():
return 123
func()
def func():
print('f1')
yield 1
print('f2')
yield 2
print('f3')
yield 100
print('f4')
# 函式內部**不會執行,返回乙個 生成器物件 。
v1 = func()
# 生成器是可以被for迴圈,一旦開始迴圈那麼函式內部**就會開始執行。
for item in v1:
print(item)
def func():
count = 1
while true:
yield count
count += 1
val = func()
for item in val:
print(item)
def func():
count = 1
while true:
yield count
count += 1
if count == 100:
return
val = func()
for item in val:
print(item)
示例:讀檔案
def func():
"""分批去讀取檔案中的內容,將檔案的內容返回給呼叫者。
:return:
"""cursor = 0
while true:
f = open('db', 'r', encoding='utf-8')# 通過網路連線上redis
# 代指 redis[0:10]
f.seek(cursor)
data_list =
for i in range(10):
line = f.readline()
if not line:
return
cursor = f.tell()
f.close() # 關閉與redis的連線
for row in data_list:
yield row
for item in func():
print(item)
redis原始碼示例
其他知識:
#總結
def func():
yield 1
yield 2
yield 3
v = func()
result = v.__next__()
print(result)
result = v.__next__()
print(result)
result = v.__next__()
print(result)
result = v.__next__()
print(result)
def func():
yield 1
v = func()
result = v.__iter__()
print(result)
生成器和迭代器
可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...
迭代器和生成器
1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...
生成器和迭代器
1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...