通过应用相同逻辑重复多次的过程称为迭代。在像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
免责声明:以上内容仅代表 个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。