Python进行区间取值案例讲解


Posted in Python onAugust 02, 2021

需求背景:

进行分值计算。如下图,如果只是一两个还好说,写写判断,但是如果有几十个,几百个,会不会惨不忍睹。而且,下面的还是三种情况。

例如:

Python进行区间取值案例讲解

Python进行区间取值案例讲解

解决:

# 根据值、比较list, 值list,返回区间值, other_value 即不在的情况
    def get_value_by_between(self, compare_value, compare_list, value_list, other_value, type="compare", left=False,
                             right=True):
        try:
            if compare_value is None or compare_value == '':
                return other_value
 
            if len(compare_list) != len(value_list):
                raise Exception("区间对比两个list长度不一致")
 
            # # 如果比较的值和其它情况值一致,说明是其它情况
            # if compare_value == other_value:
            #     return other_value
 
            # 左边开区间
            if compare_list[0] == -9999999 and compare_list[1] >= compare_value:
                return value_list[0]
 
            # 右边开区间
            if right is True and compare_value > compare_list[len(compare_list) - 1]:
                return value_list[len(compare_list) - 1]
            # 左边开区间
            # if left is True and compare_value <= compare_list[0]:
            #     return compare_value[0]
 
            for ind, this_val in enumerate(compare_list):
                # 如果是最后一个,则返回最后一个值
                if compare_value > compare_list[len(compare_list) - 1]:
                    return value_list[len(compare_list) - 1]
                # 返回默认的
                elif (ind + 1) == len(compare_list):
                    return other_value
 
                # 下一个,如果大于compare_list长度减1 ,就返回最后一个
                next_val = compare_list[ind if ind >= len(compare_list) else ind + 1]
                # 第一个的话就是 大于等于,小于下一个
                if ind == 0 and compare_value >= this_val and compare_value <= next_val:
                    return value_list[ind]
                # 大于左边,小于等于右边
                elif this_val < compare_value and compare_value <= next_val:
                    return value_list[ind]
        except:
            log.error("根据区间计算分数异常", traceback.format_exc())
        return other_value
# 数字型
    def get_val_by_list(self, compare_value, compare_list, val_list, other_value):
        try:
            if compare_value is None:
                return other_value
 
            for ind, li in enumerate(compare_list):
                if len(li) == 1 and compare_value == li[0]:
                    return val_list[ind]
                # 最后一个
                elif len(li) == 1 and (ind + 1) == len(compare_list) and compare_value >= li[0]:
                    return val_list[ind]
                elif len(li) == 2 and compare_value >= li[0] and compare_value <= li[1]:
                    return val_list[ind]
        except:
            log.error(" get_val_by_list 异常", traceback.format_exc())
        return other_value

TEST

# creditTime 即值
self.get_val_by_list(creditTime, [[0],[1],[2],[3]], [20, 10, 0, -100],
                                                                   other_value=0)
self.get_value_by_between(taxCreditRating, [0, 60, 70, 80, 90],[-200, 0, 10, 20, 30], other_value=0)

如果是图2,即第三种情况,则需要多加一个0,和对应的值。

self.get_value_by_between(taxAmt12m, [0,0, 1000, 15000, 50000, 200000],[-50, -50, 0, 0, 5, 10], -0)

如果是负无穷大,则使用-999999

到此这篇关于Python进行区间取值案例讲解的文章就介绍到这了,更多相关Python进行区间取值内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python继承和抽象类的实现方法
Jan 14 Python
简单介绍Python中的几种数据类型
Jan 02 Python
Python常用内置模块之xml模块(详解)
May 23 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
python 全局变量的import机制介绍
Sep 07 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
python numpy格式化打印的实例
May 14 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
一个入门级python爬虫教程详解
Jan 27 Python
对PyTorch中inplace字段的全面理解
May 22 Python
Python制作表白爱心合集
Jan 22 Python
Python获取江苏疫情实时数据及爬虫分析
Django对接elasticsearch实现全文检索的示例代码
Aug 02 #Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 02 #Python
python数字转对应中文的方法总结
Aug 02 #Python
Python List remove()实例用法详解
Aug 02 #Python
Python中基础数据类型 set集合知识点总结
Aug 02 #Python
python unittest单元测试的步骤分析
Aug 02 #Python
You might like
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php利用cookie实现访问次数统计代码
2011/05/19 PHP
PHP生成sitemap.xml地图函数
2013/11/13 PHP
PHP概率计算函数汇总
2015/09/13 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
JS request函数 用来获取url参数
2010/05/17 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
JS实现简单日历特效
2020/01/03 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
Python中for循环控制语句用法实例
2015/06/02 Python
python妙用之编码的转换详解
2017/04/21 Python
python如何修改装饰器中参数
2018/03/20 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
办公室个人总结
2015/02/28 职场文书
防暑降温通知书
2015/04/27 职场文书
公司转让协议书
2016/03/19 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书