我有一个“节点”列表,我试图从该列表中选择具有最大值的节点。以下代码实现了此目的,但我认为可以用一种更为优雅的方式来完成。有没有一种很好的方法可以解决我所缺少的列表理解?预先感谢!
示例代码:
maxVal = 0
for node in self.nodes:
if node.val > maxVal:
maxVal = node.val
self.maxValNode = node
self.maxVal = self.maxValNode.val
答案 0 :(得分:2)
The max
function可以使用key
参数来确定如何比较项目。
因此,简单的self.maxValNode = max(self.nodes, key=lambda node: node.val)
执行相同的工作(除了最后一行,您将原样保留该行)。为了提高速度(并避免不必要的lambda
,这是我的宠儿),请事先导入operator
模块,以允许:
from operator import attrgetter # Top of file
self.maxValNode = max(self.nodes, key=attrgetter('val'))