迭代器和生成器

2021-09-19 07:30:46 字數 2619 閱讀 9035

自己不會寫迭代器,只用。

任務:請展示列表中所有的資料。

迭代器想要獲取每個值:反覆呼叫 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...