您好,登錄后才能下訂單哦!
Python迭代器與生成器怎么理解?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
for element in [1, 2, 3]:
print(element)
for element in (1, 2, 3):
print(element)
for key in {'one':1, 'two':2}:
print(key)
for char in "123":
print(char)
for line in open("myfile.txt"):
print(line, end='')
1、迭代器
對字符串,列表,使用內置函數 iter 轉化為可迭代對象, 使用next關鍵字,可迭代對象每次取其中的一個值。如下面代碼:
nums = [1,2,3,4]
nums = iter(nums)
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums))
輸出
1
2
3
4
如果超出數據的長度,將會報錯 StopIteration
nums = [1,2,3,4]
nums = iter(nums)
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums)) # 超過數據長度,報錯 StopIteration
2、生成器
使用生成器可以創建迭代器。生成器主要使用 yeild 關鍵字,每次調用 next 時會與yeild 定義的對應。例如:我們需要取 10~20之間的數據,步長為2,可以使用如下code
for x in range(10,20,2):
print(x)
但是如果步長設置為 0.5,如下代碼:
for x in range(10,20,0.5):
print(x)
將會報錯
TypeError: 'float' object cannot be interpreted as an integer
這個時候,我們就可以使用 生成器來自定義一個函數
def drange(start,stop,step):
x = start
while x< stop:
yield x
x += step
for x in drange(10,20,0.5):
print(x)
再舉一個例子:
給定一個字符串,倒敘排列:
def reverse(data):
for x in range(len(data)-1,-1,-1):
yield data[x]
for x in reverse('gold'):
print(x)
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。