我对用于在 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 .
关于python - 如何在列表理解中正确捕获生成器输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38685441/