python如何设计工具类_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制作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基础&lpar;九&rpar; type元类

python元类:type()    元类是python高阶语法. 合理的使用可以减少大量重复性的代码. 元类实际上做了以下三方面的工作: 干涉创建类的过程 修改类 返回修改之后的类 为什么使用元类? ...

python基础教程总结6——类

1. 如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class  ...

随机推荐

ant 自动化编译

bulid.xml配置: <?xml version="1.0" encoding="UTF-8" ?>

REDIS源码中一些值得学习的技术细节01

redis.c/exitFromChild函数: void exitFromChild(int retcode) { #ifdef COVERAGE_TEST exit(retcode); #else ...

CoffeeScript的类继承的工具函数extends

__hasProp = {}.hasOwnProperty, __extends = function(child, parent) { // 派生类时,如果基类的类属性值是对象,那么子类的类属性只是 ...

codeforces 510B&period; Fox And Two Dots 解题报告

题目链接:http://codeforces.com/problemset/problem/510/B 题目意思:给出 n 行 m 列只有大写字母组成的字符串.问具有相同字母的能否组成一个环. 很容易 ...

duilib进阶教程 -- Container控件的bug &lpar;14&rpar;

在里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...

&lbrack;翻译&rsqb;AOP编程

翻译文章链接http://www.codeproject.com/Articles/1080517/Aspect-Oriented-Programming-using-Interceptors-wit ...

动态更换view类的背景----StateListDrawable的应用

StateListDrawable可以根据View的不同状态,更换不同的背景 可以应用如EditText,Button等中,以Button为例 系统中默认的按钮被按下的颜色和未点击时的颜色不一样,该种 ...

Material04 MdCardModule和MdButtonModule综合运用

设计需求:设计一个登陆页面 1 模块导入 1.1 将MdCardModule和MdButtonModule模块导入到共享模块中 import { NgModule } from '@angular/c ...

ICMP shell

场景 反向shell的场景下使用 原理 ICMP作为获取反向shell的通道 实践 运行 run.sh报错,可能是因为用的Parrot.改一下就可以了 ifconfig | grep 'inet '| ...

SQL 基础学习&lpar;2&rpar; Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念

SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值