Skip to main content
 首页 » 编程设计

python之如何在列表理解中正确捕获生成器输出

2025年05月04日13luoye11

我对用于在 python 中创建平方和的生成器感到有些困惑。本质上,我是在迭代存储在字典中的向量并找到具有另一个目标向量的 SS。

我正在尝试通过使用列表理解和生成器来更符合 Python 的编码,但我很难理解这是如何工作的。 “生成”的函数只返回一个字符串

<generator object distance.<locals>.operation at 0x00000181748E2048> 

这显然是错误的。任何意见,将不胜感激。理想情况下想要输出 SS 操作的结果,但也想知道我是如何误解这一点的。

import math 
 
v = [2,-2,1,3] 
dv = {'a1':[0,1,3,5], 'a2':[2,5,6,7], 'a3':[1,-2,-3,2], 'a4':[2,2,1,1], 
      'a5':[3,2,1,-1]} 
 
def distance(v, dv): 
 
    def operation(orig, nbr): 
        yield [sum(math.sqrt(orig - nbr) for orig, nbr in zip(orig, nbr))] 
 
    for k in sorted(dv): 
        l = dv[k] 
        list = operation(v,l) 
        print(list) 
 
distance(v, dv) 

请您参考如下方法:

您想使用list(operation(v, l))。生成器作为生成器对象生成,因此您必须使用 list() 将它们显式转换为列表。

举例说明here .