Python基础之自定义工具类
class ListHelper:
@staticmethod
def find_all(target, func_condition):
"""
查找列表中满足条件的所有元素
:param target: 列表
:param func_condition: 条件
函数/方法类型
-- 参数:列表中的元素
-- 返回值:是否满足条件bool值
:return:
"""
for item in target:
if func_condition(item):
yield item @staticmethod
def first(target, func_condition):
"""
查找列表中满足条件的第一个元素
:param target:
:param func_condition:
:return:
"""
for item in target:
if func_condition(item):
return item @staticmethod
def select(target, func_condition):
"""
筛选列表中指定条件的数据
:param target:
:param func_condition:
:return:
"""
for item in target:
# yield xxx(item)
yield func_condition(item) @staticmethod
def sum(target, func_condition):
"""
计算列表中指定条件的所有元素和
:param target:
:param func_condition:
:return:
"""
sum_value = 0
for item in target:
# sum_value += xxx(item)
sum_value += func_condition(item)
return sum_value @staticmethod
def last(target,func_condition):
"""
查找满足条件的最后一个对象
:param target:
:param func_condition:
:return:
"""
for i in range(len(target) - 1,-1,-1):
# if xxx(list01[i]):
if func_condition(target[i]):
return target[i] @staticmethod
def get_count(target,func_condition):
"""
获取所有满足条件的对象总数
:param target:
:param func_condition:
:return:
"""
count_value = 0
for item in target:
if func_condition(item):
count_value += 1
return count_value @staticmethod
def exists(target,func_condition):
"""
判断是否包含满足条件的对象
:param target:
:param func_condition:
:return:
"""
for item in target:
if func_condition(item):
return True
return False @staticmethod
def delete_all(target,func_condition):
"""
删除满足条件的所有对象
:param target:
:param func_condition:
:return:
"""
del_count = 0
for i in range(len(target) - 1,-1,-1):
if func_condition(target[i]):
del target[i]
del_count += 1
return del_count @staticmethod
def get_max(target,func_condition):
"""
获取指定条件的最大对象(第一个)
:param target:
:param func_condition:
:return:
"""
max_value = target[0]
for i in range(1, len(target)):
# if max_value.hp < target[i].hp:
if func_condition(max_value) < func_condition(target[i]):
max_value = target[i]
return max_value @staticmethod
def order_by(target,func_condition):
"""
根据指定条件升序排列
:param target:
:param func_condition:
:return:
"""
for r in range(len(target)-1):
for c in range(r+1,len(target)):
# if target[r].hp > target[c].hp:
if func_condition(target[r]) > func_condition(target[c]):
target[r],target[c] = target[c],target[r] @staticmethod
def get_min(target, func_condition):
"""
获取指定条件的最小对象(第一个)
:param target:
:param func_condition:
:return:
"""
min_value = target[0]
for i in range(1, len(target)):
# if min_value.hp > target[i].hp:
if func_condition(min_value) > func_condition(target[i]):
min_value = target[i]
return min_value @staticmethod
def order_by_descending(target,func_condition):
"""
根据指定条件降序排列
:param target:
:param func_condition:
:return:
"""
for r in range(len(target)-1):
for c in range(r+1,len(target)):
if func_condition(target[r]) < func_condition(target[c]):
target[r],target[c] = target[c],target[r]
万能排序法:
def sort(target,func_condition):
"""
万能排序
:param target: 需要排序的数据
:param func_condition: 排序的逻辑
func_condition 类型是函数
参数是列表中两个元素
返回值是比较的结果
方法体是比较的条件
:return:
"""
for r in range(len(target) - 1):
for c in range(r + 1, len(target)):
if func_condition(target[r],target[c]):
target[r], target[c] = target[c], target[r] list01 = [3,34,5,6,8]
sort(list01,lambda e1,e2:e1 < e2)
print(list01)
Python基础之自定义工具类的更多相关文章
- 《零基础学习Python制作ArcGIS自定义工具》课程简介
Python for ArcGIS Python for ArcGIS是借助Python语言实现ArcGIS自动化行为的综合,它不止是如课程标题所述的“制作ArcGIS自定义工具”,还包括使用Pyth ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
- Thinkphp自定义工具类的使用!
在使用Thinkphp做开发的时候,很多时候会用到一些自己写的类,为了方便管理,可以把这些类,单独放到一个文件里. 这就是自定义工具类: 首先在 Application 目录下新建 Component ...
- ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)
验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...
- velocity 自定义工具类接入
网上的教程几乎都是同一篇: velocity 自定义工具类 - eggtk - CSDN 博客 但是教程有不完善的地方,我就补充一下. 补充: 引入的jar包和版本要一致.我们项目中因为没有定义确切版 ...
- Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)
Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListe ...
- JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)
一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...
- Python基础(九) type元类
python元类:type() 元类是python高阶语法. 合理的使用可以减少大量重复性的代码. 元类实际上做了以下三方面的工作: 干涉创建类的过程 修改类 返回修改之后的类 为什么使用元类? ...
- python基础教程总结6——类
1. 如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class ...
随机推荐
- 【Flask】Flask学习笔记(一) 应用基本结构
初始化 使用前必须创建一个应用实例 from flask import Flask app = Flask(__name__) 路由和视图函数 请求流程 客户端(web浏览器)--> web服 ...
- USACO Training Section 1.1 题解(共4题)
第一题 题目传送门:你的飞碟在这儿 分析 水题一道,输入两个字符串,将它们转换为数字并同时相乘,然后判断一下它们是不是对于47同余就可以了. 代码 #include<bits/stdc++.h& ...
- mysql 利用druid 为访问密码加密
在原来数据库配置文件jdbc.properties 文件中增加几行加密文件 jdbc.username=rootjdbc.password=KqYkfcQkQOdOpCnaokLfb9Kbzdf+NG ...
- 【原创精品】mac 彻底卸载趋势科技
在公司,给我的mac 笔电装了公司的查杀毒软件,此后,这货就像挥之不去的病毒,就像你心理上阴影一样如影随形,最邻人方案的是这货没界面,只是个后台服务,一般人就没办法了.最最令人反感的是它经常控制/拖慢 ...
- java调用webservice,restful
java调用webservice public String redoEsb(String loguid, String user, String comments, String newMsg, S ...
- 拦截请求并记录相应信息-springboot
方式: 1.FIlter过滤器 2.interceptor拦截器 3.Aspect切片 一.Filter过滤器形式 只能处理request中的数据 不能确定请求要走的是哪个controller信息 ...
- python json按输入顺序输出内容
通过使用collecions,进行排序.collections是一个python的内建模块. import collections dic = collections.OrderedDict() # ...
- docker 安装kafka
1.下载镜像这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像 docker pull wurstmeister/zookeeperdocke ...
- EF Core 2.2 对多个 DbContext 多个数据库的情况进行迁移的示例
目录 场景 创建新项目 创建第一个模型 创建第二个模型 使用依赖注入注册上下文 创建数据库 场景 在一个项目中,使用了多个 DbContext 且每个 DbContext 对应一个数据库的情况 创建新 ...
- Yii2 console执行定时脚本
为什么要做crontab脚本 我们的项目使用YII2开发,并不是很大的一个电商平台,pv.IP访问量并不是很高,但客户的数据是日积月累已经产生100万条数据了,之前更新订单等数据使用定时脚本直接访问内 ...