Python 如何查看实际输出而不是<;生成器对象>;?
我一直在玩弄字典,试着让它们变得更舒服。我遇到了,这让我想到了潜在的应用。在超越自己之前,我试着从一个基本的例子开始Python 如何查看实际输出而不是<;生成器对象>;?,python,python-3.x,function,dictionary,generator,Python,Python 3.x,Function,Dictionary,Generator,我一直在玩弄字典,试着让它们变得更舒服。我遇到了,这让我想到了潜在的应用。在超越自己之前,我试着从一个基本的例子开始 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 =
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>]
将numpy导入为np
时间=np.linspace(0,20,21)
obs=np.linspace(50100,21)
def方形(x):
返回x**2
def多维数据集(x):
返回x**3
def root_六(x):
返回x**(1/6)
调度程序={'sq':正方形,'cb':立方体,'6th':根{u-six}
def gimme(func_dict=dispatcher,value=times):
res=[]
对于本票中的本票:
res.append(func(t)表示值中的t)
返回res
gg=np.array(list(gimme())#我尝试了各种组合
打印(gg)
>> [
>>
>> ]
如何测试代码是否正确执行?不要附加生成器表达式。我不明白你为什么要在这里这么做。使用列表理解:
res.append([func(t) for t in values])
如果您想为func\u dict
中的每个func
创建一个列表。如果没有,请使用将消耗发电机的扩展
不使用括号将创建未计算的生成器表达式。如果您进行了评估,您也会发现代码中的另一个问题:func
只是函数的字符串名称!您应该将for
循环更改为遍历值,而不是:
for func in func_dict.values():
res.append([func(t) for t in values])
不要附加生成器表达式。我不明白你为什么要在这里这么做。使用列表理解:
res.append([func(t) for t in values])
如果您想为func\u dict
中的每个func
创建一个列表。如果没有,请使用将消耗发电机的扩展
不使用括号将创建未计算的生成器表达式。如果您进行了评估,您也会发现代码中的另一个问题:func
只是函数的字符串名称!您应该将for
循环更改为遍历值,而不是:
for func in func_dict.values():
res.append([func(t) for t in values])