首页 新闻 会员 周边

可迭代对象”和“迭代器”在实际使用中最直观的表现,就是能不能被重复遍历

0
[已关闭问题] 关闭于 2026-07-01 14:53

常见的多迭代有range()和那些支持迭代的内置类型,比如字符串、列表、元组等。例如字符串的多迭代:

1. 可迭代对象:可以无限次重复遍历

就像 range(10)、列表 list、字符串 str,它们本身只是一个“数据源”或“容器”。每次你用 for 循环去遍历它们时,它们都会重新生成一个全新的迭代器
r = range(3)

# 第一次遍历,毫无压力
for i in r:
    print(i, end=" ")  # 输出: 0 1 2
print()

# 第二次遍历,依然毫无压力
for i in r:
    print(i, end=" ")  # 输出: 0 1 2

2. 迭代器:是一次性的“消耗品”

而真正的“迭代器”(比如用 iter() 生成的对象,或者生成器),它内部维护着一个指针(状态)
r = range(3)
it = iter(r)  # 这里才真正生成了迭代器

# 第一次遍历
for i in it:
    print(i, end=" ")  # 输出: 0 1 2
print()

# 第二次遍历,什么都不会发生!
for i in it:
    print(i, end=" ")  # 没有任何输出,因为迭代器已经耗尽了
  • 可迭代对象(Iterable) = 一家餐厅。客人(for 循环)吃完走了,餐厅还在,随时可以迎接下一波客人(每次生成新的迭代器)。
  • 迭代器(Iterator) = 一份外卖。吃完就没了,不能重新吃(一次性消耗)。
*Tesla*的主页 *Tesla* | 老鸟四级 | 园豆:2250
提问于:2026-07-01 14:53
< >
分享
所有回答(1)
0
>>> S = "abc"
>>> for x in S:
...   for y in S:
...     print(x + y, end=" ")
aa ab ac ba bb bc ca cb cc 
*Tesla* | 园豆:2250 (老鸟四级) | 2026-07-01 14:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册