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写的Tkinter程序屏幕居中方法
Mar 10 Python
python使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
Django框架表单操作实例分析
Nov 04 Python
PyQt5中QSpinBox计数器的实现
Jan 18 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 Python
pytorch实现ResNet结构的实例代码
May 17 Python
Python echarts实现数据可视化实例详解
Mar 03 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
PHP的开合式多级菜单程序
2006/10/09 PHP
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python实时监控cpu小工具
2018/06/21 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
Pandas之缺失数据的实现
2021/01/06 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
高一家长会邀请函
2014/01/12 职场文书
英文留学推荐信范文
2014/01/25 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
护理中职生求职信范文
2014/02/24 职场文书
网管求职信
2014/03/03 职场文书
森林病虫害防治方案
2014/06/02 职场文书
银行转正自我鉴定
2014/09/29 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
小学母亲节活动总结
2015/02/10 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
MySQL 数据类型选择原则
2021/05/27 MySQL
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android