📅  最后修改于: 2023-12-03 15:18:51.738000             🧑  作者: Mango
Python 中的可迭代和迭代器是非常重要的概念,它们分别用于处理序列数据的访问和迭代,一起使用有助于写出更简洁,更高效的代码。
可迭代对象(iterable)是一个集合,它定义了一个 __iter__()
方法,该方法返回一个迭代器。简单来说,当我们想要处理经常被整体处理的数据时,可以使用可迭代对象。
在 Python 中,列表、元组、字符串、字典、集合、文件等都是可迭代对象。我们可以通过内置的 iter()
函数将这些对象转换为迭代器。
# 列表作为可迭代对象
lst = [1, 2, 3]
for item in lst:
print(item)
# 字符串作为可迭代对象
string = "hello"
for char in string:
print(char)
# 文件作为可迭代对象
with open("example.txt", "r") as f:
for line in f:
print(line)
迭代器(iterator)是一个对象,它实现了一个 __next__()
方法,该方法返回迭代序列中的下一个元素,一次一个。如果没有更多元素可迭代,则抛出 StopIteration 异常,表示迭代已完成。
迭代器在处理大量数据时非常有效,因为它们可以一次只返回一个元素,最小化了内存使用和处理时间。
在 Python 中,迭代器可以通过使用内置的 iter()
函数来创建。我们还可以使用 next()
函数来从迭代器中获取元素。
# 手动创建迭代器
lst = [1, 2, 3]
iter_obj = iter(lst)
# 从迭代器中获取元素
print(next(iter_obj))
print(next(iter_obj))
print(next(iter_obj))
可迭代对象是一个集合,它定义了一个 __iter__()
方法,该方法返回一个迭代器。迭代器是一个对象,它实现了一个 __next__()
方法,该方法返回迭代序列中的下一个元素,一次一个。
简单来说,可迭代对象可以与迭代器一起使用,以便访问和处理序列数据。但是,它们之间的主要区别是:可迭代对象支持多次访问,而迭代器只能往前遍历一次。
由于 Python 中的迭代器是单向迭代器,所以我们无法预测下一个元素,也无法回到之前的元素。但是,我们可以将可迭代对象转换为一个新的迭代器。
__iter__()
方法,返回一个迭代器。在 Python 中,列表、元组、字符串、字典、集合、文件等都是可迭代对象。__next__()
方法,该方法返回迭代序列中的下一个元素,一次一个。当没有元素可以迭代时,抛出 StopIteration 异常。