上一篇
Python iter函数完全指南 - 从基础到高级用法详解
- Python
- 2025-08-02
- 1904
Python iter函数使用完全指南
iter函数概述
Python的iter()
函数用于创建迭代器对象,是Python迭代机制的核心。迭代器允许我们逐个访问集合中的元素,而不需要一次性加载整个数据集到内存中。
迭代器有两个基本方法:
- __iter__() - 返回迭代器对象本身
- __next__() - 返回容器中的下一个元素
iter函数基本语法
iter(object[, sentinel])
参数说明
- object:必需参数,要创建迭代器的可迭代对象
- sentinel:可选参数,如果提供了此参数,object必须是可调用对象
返回值
返回一个迭代器对象,可以通过next()函数访问其元素
基本用法示例
1. 从列表创建迭代器
# 创建列表
my_list = [10, 20, 30, 40]
# 创建迭代器
list_iter = iter(my_list)
# 访问元素
print(next(list_iter)) # 输出: 10
print(next(list_iter)) # 输出: 20
print(next(list_iter)) # 输出: 30
2. 从字符串创建迭代器
# 创建字符串
my_string = "Python"
# 创建迭代器
str_iter = iter(my_string)
# 逐个访问字符
print(next(str_iter)) # 输出: P
print(next(str_iter)) # 输出: y
print(next(str_iter)) # 输出: t
高级用法示例
1. 使用sentinel参数
当提供sentinel参数时,object必须是一个可调用对象(如函数),迭代器会不断调用该对象直到返回值等于sentinel
import random
# 生成随机数的函数
def random_number():
return random.randint(1, 10)
# 创建迭代器,当返回值为5时停止
random_iter = iter(random_number, 5)
# 遍历迭代器
print("随机数序列(遇到5停止):")
for num in random_iter:
print(num, end=' ')
# 示例输出: 3 8 2 9 7 4 6 1 10 3 2 9 4
2. 创建自定义迭代器
class CountDown:
def __init__(self, start):
self.current = start
self.end = 0
def __iter__(self):
return self
def __next__(self):
if self.current > self.end:
num = self.current
self.current -= 1
return num
else:
raise StopIteration
# 使用自定义迭代器
countdown_iter = iter(CountDown(5))
print("\n倒计时开始:")
for num in countdown_iter:
print(num, end=' ') # 输出: 5 4 3 2 1
3. 文件读取迭代器
# 使用iter和lambda创建文件读取迭代器
with open('example.txt', 'r') as file:
# 逐行读取直到遇到空行
for line in iter(lambda: file.readline().strip(), ''):
print(line)
iter函数注意事项
- 迭代器是单向的,只能向前移动,不能后退或重置
- 当迭代器耗尽后,再次调用next()会引发StopIteration异常
- 在for循环中会自动处理StopIteration异常
- 使用sentinel参数时,确保可调用对象最终会返回sentinel值,否则会进入无限循环
- 迭代器比列表更节省内存,特别适合处理大型数据集
总结
Python的iter()
函数是创建迭代器的核心工具,主要优势在于:
- 提供了一种高效访问集合元素的方式
- 大大节省内存资源,特别适合处理大型数据
- 支持自定义迭代行为
- 与sentinel参数结合可实现灵活的条件迭代
通过掌握iter函数,您可以编写更高效、更Pythonic的代码,充分利用Python迭代器的强大功能。
本文由NingSen于2025-08-02发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20257087.html
发表评论