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

标签 python generator

我对用于在 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/

相关文章:

Python:从二进制数中去除字符串引号

python - 使用生成器在 python 中线程化

python - 什么时候使用 return(产生一些东西)?

python - 从 url 获取产品代码,我需要正则表达式吗?

jquery - 使用 Flask/BootStrap/jquery 通过帖子提交文本框时重定向到特定选项卡

python - 带Lambda层的Keras

Python 图像搜索包装器

javascript - 管理流的生成器和迭代器的正确模式是什么

list - 使用 Scala 中的函数生成的值生成列表

schema - Doctrine schema.yml 生成器