Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成器函数是否比Python中相应的for循环(或广义的迭代)快_Python_Iterator_Generator - Fatal编程技术网

生成器函数是否比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]

我是一个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]

代码改编自“编程集体智能”
相关问题

通常
因为循环是最慢的。我认为你第一次做对了:测量然后发展直觉,而不是相反。你的
总和实际上是使用一个
列表
而不是一个基因XP。你应该在每个策略h后去掉
总和
后的方括号根据数据集的大小,在CPU和内存使用之间进行不同的权衡。过早的优化是所有问题的根源-如果您有性能问题,那么配置/优化,如果没有,为什么要流汗?