📜  Python | 可迭代和迭代器之间的区别(1)

📅  最后修改于: 2023-12-03 15:18:51.738000             🧑  作者: Mango

Python | 可迭代和迭代器之间的区别

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 异常。
  • 可迭代对象可以与迭代器一起使用,以便访问和处理序列数据,但是它们之间的区别是:可迭代对象支持多次访问,而迭代器只能向前遍历一次。