2017-02-28 37 views
0

我有一個非負整數數組,其中最小的是min_val,其中最大的是max_val。我希望使用range來創建一個給定的step bin邊界列表,使得範圍中的第一個值等於min_val,並且範圍中的最後一個值大於max_val。我的嘗試是:製作帶有範圍的垃圾箱

bins = list(range(min_val, max_val + step + 1, step)) 

似乎我無法繞到我的頭是如何確定的第二個參數range(),可以保證在範圍的最後一個值大於max_val更大的最小值。我的嘗試是否正確?

+0

如果它需要是__GREATER__而不是大於或等於變化1〜2,否則它的優良 – Jerfov2

+0

「大於」(>)或「大大於或等於「(> =)而不是'max_val'? – Elmex80s

+0

@ Jerfov2它需要大於(>)。爲什麼2? –

回答

0

您的代碼是正確的。

讓我們暫時忘記range函數。如果上限(包含上限)爲max_val + step,那麼您保證所採取的最後一步大於(>)max_val,因爲如果它將在max_val處停止,那麼您可以執行另一個大小爲step的步驟,因爲max_val + step是上限。

現在範圍函數在第二參數之前停止步進(<)。所以如果你的上限是max_val + step你必須加1,所以你有max_val + step + 1

注意,這是不正確的代碼:

>>> range(6, 11 + 3 + 2, 3) 
[6, 9, 12, 15] 

,因爲你要12是在列表中的最大值。

這也是不正確的結果

>>> range(5, 11 + 3 + 0, 3) 
[5, 8, 11]