繁体   English   中英

python中的生成器

[英]Generators in python

我刚遇到一个问题,我无法将python的内置range()函数用于浮点值。 因此,我决定使用手动定义的浮动范围函数:

def float_range(start, stop, step):
    r = start
    while r < stop:
        yield r
        r += step

问题是:该函数返回一个生成器对象。 现在我需要这个范围进行绘图:

ax.hist(some_vals, bins=(float_range(some_start, some_stop, some_step)), normed=False)

由于float_range()的返回类型是生成器,因此将无法使用,而hist()函数不接受此类型。 除了不使用yield之外,我是否有其他解决方法?

如果需要给定范围,则可以

ax.hist(some_vals, bins=(list(float_range(some_start, some_stop, some_step))), normed=False)

或者只是让您的float_range返回一个列表:

def float_range(start, stop, step):
    result = []
    r = start
    while r < stop:
        result.append(r)
        r += step
    return result

顺便说一句:关于如何使用Python中的生成器的不错参考: https : //wiki.python.org/moin/Generators

您可以使用以下方法将生成器转换为列表:

list(float_range(1, 4, 0.1))

但是看到您正在使用matplotlib,您应该使用numpy的解决方案:

np.arange(1, 4, 1, dtype=np.float64)

要么:

np.linspace(start, stop, (start-stop)/step)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM