我是 Python 初学者,虽然我经常使用生成器(它们简洁明了,但我想了解它们是否比对应的 for 循环(或广泛的迭代)更好)更快:在处理时间和/或调用开销方面,甚至内存。示例-:[这里,数据是字典对象]
from math import sqrt
# **Generator**
sum = sqrt(sum([pow(data[pers1][item] - data[pers2][item], 2)
for item in data[pers1]
if item in data[pers2]]))
# **For loop Equivalent**
sum = 0
for item in data[pers1]:
if item in data[pers2]:
sum += sqrt(pow(data[pers1][item] - data[pers2][item], 2))
循环结构是否完全相同,如果不同(在其他情况下),那会是什么时候?我试图扩大输入数据并测量时间(查找代理),但这不是结论性的。我想更直观地理解这一点,即是否有区别。
[我在 python 2.7 上]
代码改编自“编程集体智慧” 相关问题:Python 的 [<generator expression>] 至少比 list(<generator expression>) 快 3 倍?