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中精确输出JSON浮点数的方法
Apr 18 Python
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
详解Python网络爬虫功能的基本写法
Jan 28 Python
python分布式环境下的限流器的示例
Oct 26 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 Python
python爬虫破解字体加密案例详解
Mar 02 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
php简单统计中文个数的方法
2016/09/30 PHP
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Python基于Tkinter实现的记事本实例
2015/06/17 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python如何实现内容写在图片上
2018/03/23 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
营销团队口号
2014/06/06 职场文书
党员批评与自我批评
2014/10/15 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
入党介绍人考察意见
2015/06/01 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书