如何有效实现价值分类(过滤)?

时间:2017-03-05 06:12:25

标签: python

spearate_list = [160, 170, 180, 190]

def whichgroup(value, spearate_list)
    if value < spearate_list[0]:
        return 0
    elif spearate_list[0] <= value and value < spearate_list[1]:
        return 1
    elif spearate_list[1] <= value and value < spearate_list[2]:
        return 2
    elif spearate_list[2] <= value and value < spearate_list[3]:
        return 3
    else:
        return 4

sepearte_list可以有不同的长度范围,比如spearate_list=[50,60,70,80,90,100],我想实现这种pythonic和有效的方式。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我的建议不一定是最有效的,但合理的pythonic。首先,扩充您的列表以包括两个无穷大;

separate_list = [-float('inf'), 160, 170, 180, 190, float('inf')]

现在,形成一个间隔列表并检查您的值(例如,value=175)是否在任何间隔中(它必须恰好是其中一个间隔):

answer = [i for i,(x,y) in enumerate(zip(separate_list, separate_list[1:])) \
          if x <= value < y][0]
#2