【问题标题】:How can I view the actual output instead of <generator object>?如何查看实际输出而不是 <generator object>?
【发布时间】:2017-05-08 03:59:24
【问题描述】:

我一直在玩字典,并试图让它们变得更舒服。我遇到了this post,这让我想到了潜在的应用程序。在超越自己之前,我尝试从一个基本示例开始。

import numpy as np

times = np.linspace(0,20,21)
obs = np.linspace(50,100,21)

def square(x):
    return x**2

def cube(x):
    return x**3

def root_six(x):
    return x**(1/6)

dispatcher = {'sq':square, 'cb':cube, '6th':root_six}

def gimme(func_dict=dispatcher, values=times):
    res = []
    for func in func_dict:
        res.append(func(t) for t in values)
    return res

gg = np.array(list(gimme())) # I tried various combinations
print(gg)

>> [<generator object gimme.<locals>.<genexpr> at 0x101b886d0>
>> <generator object gimme.<locals>.<genexpr> at 0x108fc1678>
>> <generator object gimme.<locals>.<genexpr> at 0x108fc1a40>]

如何测试我的代码是否正确执行?

【问题讨论】:

    标签: python python-3.x function dictionary generator


    【解决方案1】:

    不要append 生成器表达式。我不明白为什么你想在这里这样做。使用列表推导:

    res.append([func(t) for t in values])
    

    如果您想为func_dict 中的每个func 提供一个列表。如果没有,请使用extend,它将消耗生成器。

    不使用方括号会创建一个未计算的生成器表达式。如果您进行评估,您还会发现代码的另一个问题:func 只是函数的字符串名称!您应该更改 for 循环以遍历 values,而不是:

    for func in func_dict.values():
        res.append([func(t) for t in values])
    

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 2021-01-01
      • 2020-08-11
      相关资源
      最近更新 更多