2024-05-16 22:16:57 发布
网友
min(gameinfo.not_my_planets.values(), key=lambda p: p if p.num_ships < 35)
试图得到最小的行星,但只有当行星上有35艘或更少的飞船时。在
有什么想法吗?在
您错过了lambda表达式中的else部分,但最好重写为:
else
min(filter(lambda p: p.num_ships < 35, gameinfo.not_my_planets.values()))
filer(...)将把行星的序列减少到那些拥有{}的行星。是planet物体之间的可比性,还是你应该将其与一个属性行星相比较, planet.size?如果是这样,则必须添加另一个lambda:
filer(...)
planet
planet.size
如果你不习惯函数结构,只需使用简单的列表理解(我假设行星在它们之间是可比较的):
min( p for p in gameinfo.not_my_planets.values() if p.num_ships < 35)
我不知道那个兰姆达到底是什么意思。。。根据你在评论中所说的对另一个答案:
“选择拥有35艘或更多飞船的行星”:
planets_35_or_higher = [p for p in gameinfo.not_my_planets.values() if p.num_ships >= 35])
“选择剩余的最小值”:
或者,如果行星对象没有比较运算符,请给min一个函数来获取它应该用于比较的属性,如下所示:
min
min_planet_below_35 = min(planets_below_35, key=lambda p: p.num_ships)
另外,为了解决行星上没有35艘以下飞船的可能性:
if planets_below_35: min_planet_below_35 = min(planets_below_35) else: # do something else
p if p.num_ships < 35本身就是无效语法。如果p.num_ships >= 35,lambda应该返回什么?您需要用else;例如p is p.num_ships < 35 else ...来完成它。min的key参数中的要点是为每个元素选择一个值,根据该值可以确定最小元素。在
p if p.num_ships < 35
p.num_ships >= 35
p is p.num_ships < 35 else ...
key
你所说的“只有在行星上只有35艘或更少的飞船”是什么意思?你的意思是如果所有的行星都有超过35艘飞船,你就根本不想要最小行星吗?在
您错过了lambda表达式中的
else
部分,但最好重写为:}的行星。是
^{pr2}$filer(...)
将把行星的序列减少到那些拥有{planet
物体之间的可比性,还是你应该将其与一个属性行星相比较,planet.size
?如果是这样,则必须添加另一个lambda:如果你不习惯函数结构,只需使用简单的列表理解(我假设行星在它们之间是可比较的):
我不知道那个兰姆达到底是什么意思。。。根据你在评论中所说的对另一个答案:
“选择拥有35艘或更多飞船的行星”:
“选择剩余的最小值”:
^{pr2}$或者,如果行星对象没有比较运算符,请给
min
一个函数来获取它应该用于比较的属性,如下所示:另外,为了解决行星上没有35艘以下飞船的可能性:
p if p.num_ships < 35
本身就是无效语法。如果p.num_ships >= 35
,lambda应该返回什么?您需要用else
;例如p is p.num_ships < 35 else ...
来完成它。min
的key
参数中的要点是为每个元素选择一个值,根据该值可以确定最小元素。在你所说的“只有在行星上只有35艘或更少的飞船”是什么意思?你的意思是如果所有的行星都有超过35艘飞船,你就根本不想要最小行星吗?在
相关问题 更多 >
编程相关推荐