python高阶函数:按姓名查找方法内部原理

调用查找类按要求查找

#################以下模块定义在commce包中##########################

class Commec:

@staticmethod

def function(liststart,func):

for itme in liststart:

if func(itme):

yield itme

###############以下调用commce包中的funcomm模块######################

from commce import funcomm

class Enemy:

def __init__(self,name,hp,atk,defense):

self.name=name

self.hp=hp

self.atk=atk

self.defense=defense

def __str__(self):

return "姓名:%s,--%d---%d--%d"%(self.name,self.hp,self.atk,self.defense)

list01=[Enemy("老妖",89,78,87),

Enemy("山精",200,176,287),

Enemy("青妖",102,96,97),]

#列表里的元素是三个实例对象,所以调用时要用itme.name……

re=funcomm.Commec.function(list01,lambda itme:itme.name=="老妖")

listre=funcomm.Commec.function(list01,lambda itme:itme.hp>98)

for i in listre:

print(i)

#生成器--->惰性操作

#优势:节省内存

#缺点:获取结果不灵活(不能使和索引/切片访问结果)

#解决:惰性操作--->立即操作

list_result=list(listre)#把元素加到列表,可以立即执行

for itme in list_result[:2]:

print(itme)

#查找活的敌人

for itme in funcomm.Commec.function(list01,lambda itme:itme.hp>0):

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章