Python 內(nèi)建函數(shù)列表 > Python 的內(nèi)置函數(shù) iter
Python 的內(nèi)置函數(shù) iter() 用于創(chuàng)建一個迭代器對象,它可以將可迭代對象(如列表、元組、字典、集合等)轉(zhuǎn)換為迭代器,從而支持逐個訪問元素的操作。
基本語法
iter(iterable, sentinel)
- iterable:必需參數(shù),表示要轉(zhuǎn)換為迭代器的可迭代對象(如列表、字符串等)。
- sentinel:可選參數(shù),用于指定迭代停止的條件值(主要用于自定義迭代行為)。
示例說明
-
基本用法(無
sentinel參數(shù))
numbers = [1, 2, 3, 4]
num_iter = iter(numbers) # 轉(zhuǎn)換為迭代器
print(next(num_iter)) # 輸出:1
print(next(num_iter)) # 輸出:2
- 文件逐行讀取(常用于處理大文件)
with open('data.txt', 'r') as file:
file_iter = iter(file.readline, '') # 逐行讀取,直到遇到空字符串
for line in file_iter:
print(line.strip())
-
自定義迭代終止條件(使用
sentinel)
import random
def generate_random():
return random.randint(1, 10)
# 當生成的隨機數(shù)等于5時停止迭代
random_iter = iter(generate_random, 5)
for num in random_iter:
print(num)
注意事項
- 如果沒有更多元素可迭代,調(diào)用
next()將拋出StopIteration異常。 - 字典迭代默認返回鍵(keys),可通過
dict.items()等方法獲取鍵值對。 - 迭代器只能單向遍歷,無法回退或重置,遍歷結(jié)束后需重新創(chuàng)建迭代器。
應用場景
- 處理大型數(shù)據(jù)集時節(jié)省內(nèi)存(逐項讀取而非一次性加載)。
- 實現(xiàn)自定義迭代邏輯(如條件終止)。
- 與生成器配合使用,支持惰性求值(lazy evaluation)。