python中argmin函数_成员函数的Python argmin/argmax

我想知道是否有一种“pythonic”的方法来使用argmin/argmax作为成员函数,而不使用类似于numpy的库。在

我有一个类,里面有一个返回整数的成员函数。

我实例化了这个类的几个对象。

我想知道这个方法的返回值较低的对象。在

请在下面找到我的源代码。

我想改进的部分就在我想改进的标记代码之后。这段代码运行得很好,但我确信有更好的方法来完成同样的事情。在#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""argmin example"""

class People(object):

"""People class"""

ret_ages = {"Half": 60, "AlmostFull": 65, "Full": 71} # years

def __init__(self, name, age, ret_mode):

super(People, self).__init__()

if ret_mode not in self.ret_ages.keys():

raise KeyError(ret_mode + " not in " + str(self.ret_ages.keys()))

self.name = name

self.age = age

self.ret_mode = ret_mode

def get_remaining_years(self):

"""

Return how many years People have still to work before earning

retirement.

could be "Half", "Middle" or "Full".

"""

try:

return self.ret_ages[self.ret_mode] - self.age

except KeyError:

raise KeyError("rate has to be in " + str(self.ret_ages.keys()))

def main():

"""Main function"""

people_list = [

People("Juliette", 35, "Full"),

People("Coralie", 26, "Half"),

People("Laura", 27, "AlmostFull")

]

# Debugging print

for people in people_list:

print people.name, "has still to work",\

people.get_remaining_years(), "years."

print

# End of debugging print

############################

# Code I'd like to improve #

############################

people_closer_to_ret = people_list[0]

minimum_remainining_years = people_closer_to_ret.get_remaining_years()

for people in people_list:

if people.get_remaining_years() < minimum_remainining_years:

people_closer_to_ret = people

minimum_remainining_years = people.get_remaining_years()

minimum_remainining_years = people.get_remaining_years()

###################################

# End of code I'd like to improve #

###################################

print people_closer_to_ret.name, "will be retired soon !"

if __name__ == '__main__':

main()

以下是此脚本的输出:

^{pr2}$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值