我有一个相当长的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