I’m new to Python and I really love the min function.
>>>min([1,3,15])
0
But what if I have a list of instances, and they all have a variable named number?
class Instance():
def __init__(self, number):
self.number = number
i1 = Instance(1)
i2 = Instance(3)
i3 = Instance(15)
iList = [i1,i2,i3]
Do I really have to something like
lowestI = iList[0].number
for i in iList:
if lowestI > iList[i].number: lowestI = iList[i].number
print lowestI
Can’t I use min in a nice pythonic way?
The OOP way would be to implement
__lt__:Another way is
imin = min(iList, key=lambda x:x.number)Functions like
sort, min, maxall take akeyargument. You give a function that takes an item and returns whatever should stand for this item when comparing it.