Вопрос:

Как я могу эффективно реализовать категоризацию значений (фильтрацию)?

python

17 просмотра

1 ответ

1625 Репутация автора

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]и я хочу реализовать этот питонический и эффективный способ.

Любые советы, пожалуйста?

Автор: user3595632 Источник Размещён: 05.03.2017 06:12

Ответы (1)


0 плюса

31324 Репутация автора

Мое предложение не обязательно самое эффективное, но достаточно разумное. Во-первых, дополните свой список, включив в него обе бесконечности;

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
Автор: DYZ Размещён: 05.03.2017 06:19
Вопросы из категории :
32x32