我有一個相當長的Python列表,我想根據3個百分比在單個較短的列表中返回它的一部分。如果第一個百分比是30%,則需要返回前30%的值,如果第三個百分比是50%,則需要返回長列表的後半部分值。Python - 根據計算出的百分比返回一個列表的區域
這是我迄今爲止,它有問題,具有舍入,是一個醜陋的解決方案
class OM():
def __init__(self,name):
self.name = name
self.total = 120
self.a = 21
self.b = 34
self.c = 65
def hRange(self,action):
if self.total > 0:
a_perc = int(self.a/float(self.total) *169)
b_perc = int(self.b/float(self.total) *169)
c_perc = int(self.c/float(self.total) *169)
if action=='a': return lst[:aperc]
elif action=='b': return lst[a_perc:a_perc+b_perc]
elif action=='c': return lst[-c_perc:]
else:
raise Exception
我知道這是不是很好,在所有編碼(硬編碼善堂長度169,沒有按不會採取不同的行動等)我只是想幫助解釋我正在嘗試做什麼。
在我的實際實現中,總的值a,b,c將初始化爲0,另一種方法會更新它們,因爲它們只是理貨。我只是將它們設置爲一些隨機值,以便代碼返回百分比。
我會非常感激,如果有人可以給我任何建議,如何去做這個更好的方法。
哇,謝謝!這非常令人印象深刻!我已經閱讀了地圖,縮小,過濾,lambda和列表理解。首先了解這個功能是如何工作的,其次是因爲它們非常有用! – GP89 2011-03-16 14:45:52