为什么返回发电机清单?

Deppep

我是Python初学者。我试图通过平均多个邻居的分量来定义一个“平滑”浮点列表的函数。

这是我的代码:

import random

random.seed(1)

def moving_window_average(x, n_neighbors=1):
    width = n_neighbors*2 + 1
    y = list()
    for i in range(n):
        y.append(sum(x[i+t])/width for t in range(-n_neighbors,n_neighbors))
    return y


x=[0,10,5,3,1,5]
avg=moving_window_average(x, 1)
print(avg)

在输出中,我得到的似乎是“发电机”列表,这是我不知道广告所期望的。特别是:

[<generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992aba0>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992ab48>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992a728>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992aa98>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992aa40>, <generator object moving_window_average.<locals>.<genexpr> at 0x7f57f992a9e8>]

有人可以指出我在这里发生的事情吗?

非常感谢

马蒂诺

问题在于您用于“平滑”数据的表达式编写不正确,因此其计算结果称为生成器表达式我认为以下代码是表达它的正确方法:

import random

random.seed(1)
n = 3

def moving_window_average(x, n_neighbors=1):
    width = n_neighbors*2 + 1
    y = list()
    for i in range(n):
        y.append(sum(x[i+t] for t in range(-n_neighbors,n_neighbors)) / width)
    return y


x=[0,10,5,3,1,5]
avg=moving_window_average(x, 1)
print(avg)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章