3

我是 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 倍?

4

0 回答 0