本文最后更新于41 天前,其中的信息可能已经过时,如有错误请发送邮件到zhangweihao22@outlook.com
迭代操作就相当于 C 语言中的 for 循环遍历操作。(不过迭代操作要高级一点,可以定义迭代步长…?) 迭代器就相当于实现 for 遍历操作的一个函数(容器)
AI explanation
迭代操作 迭代操作指的是对一组元素逐个进行访问的过程。在 Python 中,很多对象都支持迭代操作,像列表、元组、字符串、字典等,这些对象被叫做可迭代对象。借助迭代操作,你能够依次访问可迭代对象里的每个元素,而不用考虑其具体的实现细节。 示例代码
# 迭代列表
my_list = [1, 2, 3, 4, 5]
for num in my_list:
print(num)
# 迭代字符串
my_string = "Hello"
for char in my_string:
print(char)
在上述代码中,for
循环对列表 my_list
和字符串 my_string
进行迭代操作,逐个访问其中的元素并打印出来。
迭代器
迭代器是实现了迭代协议的对象。在 Python 中,迭代器需要实现两个方法:__iter__()
和 __next__()
。
__iter__()
:该方法返回迭代器对象本身,它使得迭代器可以在for
循环等迭代操作中被使用。__next__()
:该方法返回迭代器的下一个元素。当没有更多元素时,它会抛出StopIteration
异常。 示例代码
class MyRange:
def __init__(self, start, end):
self.start = start
self.end = end
self.current = start
def __iter__(self):
return self
def __next__(self):
if self.current < self.end:
value = self.current
self.current += 1
return value
else:
raise StopIteration
# 使用自定义迭代器
my_range = MyRange(0, 5)
for num in my_range:
print(num)
在上述代码中,MyRange
类实现了迭代器协议。__iter__()
方法返回了迭代器对象本身,__next__()
方法返回下一个元素,当到达 end
值时抛出 StopIteration
异常。
可迭代对象与迭代器的关系
可迭代对象是指实现了 __iter__()
方法的对象,这个方法会返回一个迭代器。也就是说,可迭代对象是可以被迭代的对象,而迭代器是用于实际执行迭代操作的对象。
示例代码
my_list = [1, 2, 3]
# 获取迭代器
my_iterator = iter(my_list)
# 使用 next() 函数获取下一个元素
print(next(my_iterator)) # 输出 1
print(next(my_iterator)) # 输出 2
print(next(my_iterator)) # 输出 3
在上述代码中,iter()
函数用于从可迭代对象 my_list
中获取迭代器,next()
函数用于获取迭代器的下一个元素。
总结
- 迭代操作是对一组元素逐个进行访问的过程。
- 迭代器是实现了
__iter__()
和__next__()
方法的对象,用于实际执行迭代操作。 - 可迭代对象是实现了
__iter__()
方法的对象,它可以返回一个迭代器。 借助迭代操作和迭代器,你能够高效且灵活地处理各种序列数据。