通过应用相同逻辑重复多次的过程称为迭代。在像python这样的编程语言中,创建一个循环,几乎没有条件来执行迭代,直到它超过限制。如果循环连续执行 6 次,那么可以说特定块已经迭代了 6 次。

示例:

a = [0, 5, 10, 15, 20]
for i in a:
    if i % 2 == 0:
        print(str(i)+' 是一个偶数')
    else:
        print(str(i)+' 是一个技数')

运行结果:

0 是一个偶数

5 是一个技数

10 是一个偶数

15 是一个技数

20 是一个偶数

迭代器

迭代器是一个包含可数数值的对象,它用于迭代可迭代的对象,如列表、元组、集合等。迭代器是使用类实现的,这里不需要用于迭代的局部变量,它遵循惰性计算,其中表达式的计算将被保留并存储在内存中,直到专门调用该项目,这有助于我们避免重复计算。由于实现了惰性计算,它只需要 1 个内存位置来处理该值,当我们使用大型数据集时,RAM 空间的浪费将减少,同时加载整个数据集的需要将不存在。

使用迭代器-

  • iter() 关键字用于创建包含可迭代对象的迭代器。
  • next() 关键字用于调用可迭代对象中的下一个元素。
  • 可迭代对象完成后,要再次使用它们,请将它们重新分配给同一对象。

示例代码:

iter_list = iter(['Yiibai', 'For', 'Geeks'])
print(next(iter_list))
print(next(iter_list))
print(next(iter_list))

生成器

这是以简单方式创建迭代器的另一种方式,它使用关键字“yield”而不是在定义的函数中返回它。生成器是使用函数实现的。就像迭代器一样,生成器也遵循惰性求值。在这里,yield 函数返回数据,而不会影响或退出函数。它将以可迭代格式返回一个数据序列,我们需要迭代序列以使用数据,因为它们不会将整个序列存储在内存中。

示例:

def sq_numbers(n):
    for i in range(1, n+1):
        yield i*i


a = sq_numbers(3)

print("The square of numbers 1,2,3 are : ")
print(next(a))
print(next(a))
print(next(a))

迭代器和生成器之间的区别对比表

迭代器 生成器
类用于实现迭代器 函数用于实现生成器。
此处不使用局部变量。 收益函数之前的所有局部变量都被存储起来。
迭代器主要用于使用 iter() 函数迭代或将其他对象转换为迭代器。 生成器多用于循环中,通过返回循环中的所有值来生成迭代器,而不会影响循环的迭代
迭代器使用 iter() 和 next() 函数 生成器使用 yield 关键字
每个迭代器都不是生成器 每个生成器都是迭代器

迭代器和生成器的区别

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:迭代器和生成器的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-iterator-vs-generator.html
免责声明:以上内容仅代表 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。