生成器函数是否比Python中相应的for循环(或广义的迭代)快
我是一个Python初学者,虽然我经常使用生成器(它们简洁明了,但我想了解它们是否比对应的for循环(或广义的迭代)更好) 更快:在处理时间和/或呼叫开销方面,甚至在内存方面。 示例-: [这里,数据是字典对象]生成器函数是否比Python中相应的for循环(或广义的迭代)快,python,iterator,generator,Python,Iterator,Generator,我是一个Python初学者,虽然我经常使用生成器(它们简洁明了,但我想了解它们是否比对应的for循环(或广义的迭代)更好) 更快:在处理时间和/或呼叫开销方面,甚至在内存方面。 示例-: [这里,数据是字典对象] from math import sqrt # **Generator** sum = sqrt(sum([pow(data[pers1][item] - data[pers2][item], 2) for item in data[pers1]
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]
代码改编自“编程集体智能”
相关问题:通常
因为循环是最慢的。我认为你第一次做对了:测量然后发展直觉,而不是相反。你的总和实际上是使用一个列表
而不是一个基因XP。你应该在每个策略h后去掉总和
后的方括号根据数据集的大小,在CPU和内存使用之间进行不同的权衡。过早的优化是所有问题的根源-如果您有性能问题,那么配置/优化,如果没有,为什么要流汗?