Python 可迭代对象和迭代器的区别是什么

2023-03-31 00:00:00 对象 迭代 区别

在 Python 中,可迭代对象和迭代器是两个重要的概念。它们的主要区别在于:可迭代对象是一类能够被迭代的对象,而迭代器是一种用于迭代访问可迭代对象的工具。

简单来说,可迭代对象就是一类对象,它们可以被迭代访问,比如说列表、元组、字符串等,而迭代器是一种用于访问可迭代对象的工具,它可以依次访问可迭代对象的元素。

下面是一个使用字符串进行演示的例子:

# 定义一个字符串
str_example = "pidancode.com"

# 判断 str_example 是否是可迭代对象
print(f"str_example is iterable: {hasattr(str_example, '__iter__')}")

# 判断 str_example 是否是迭代器
print(f"str_example is iterator: {hasattr(str_example, '__next__')}")

# 使用迭代器访问字符串的每个字符
str_iterator = iter(str_example)
while True:
    try:
        char = next(str_iterator)
        print(char)
    except StopIteration:
        break```

输出结果为:

str_example is iterable: True
str_example is iterator: False
p
i
d
a
n
c
o
d
e
.
c
o
m

从输出结果可以看出:

  • 字符串是可迭代对象,因为它实现了 iter 方法。
  • 字符串不是迭代器,因为它没有实现 next 方法。
  • 可以使用 iter() 函数将字符串转换为迭代器,并使用 next() 函数依次访问字符串的每个字符。

需要注意的是,一旦迭代器被遍历完毕,就不能再次使用 next() 函数获取元素,否则会抛出 StopIteration 异常。

相关文章