簡體   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