我工作Think Python,並有一個exercise那裏你編寫執行以下功能:從頭開始構建一個水桶名單直方圖在Python
- 取作爲參數:
L
(一號碼列表)和n
(和INT) - 回報中的
n
子列表- 每個子列表表示由數字在
L
覆蓋的範圍的細分一個列表的形式的直方圖,幷包含一個int代表的L
許多元素如何下跌在細分
- 每個子列表表示由數字在
所以,我們正在尋找一個範圍內的數字,切碎該範圍爲n
等於桶,並建立與這些分組的直方圖。本練習之前的部分顯示了在處理區間[0.0,1.0)中的隨機浮點列表時,如何構建這樣的函數。它查看元素落在該區間中的位置(它只是它的值),將其乘以n
,並將其轉換爲int(在進程中截斷)。這會在[0,n)中產生一個int,這是適當的桶索引。
這裏的區別在於我們沒有在預定的(方便的)時間間隔內工作。這是我想出來的。我想知道是否有更優雅的方式來做到這一點。我計算了我的間隔爲max(L) - min(L)
,但不得不增加一點額外的東西,否則L
中的最大元素得到的索引是n(超出範圍),而應該取n-1。我稱這個小額外extraBit
。
def histogram(L, n):
hist = [0] * numBuckets
minVal = min(L)
maxVal = max(L)
extraBit = .0000000000001
interval = (maxVal - minVal) + extraBit
for i in L:
placement = (i - minVal)/interval
index = int(placement * numBuckets)
hist[index] = hist[index] + 1
return hist
有沒有更漂亮的方法來做到這一點?
漂亮會是縮進。 – RickyA
你能具體嗎?我會分解它以提高可讀性,但我不知道這是否意味着什麼。 – ivan
別人昨天修了... – RickyA