Find All Items With Maximum Value Produced By An Iterator
I want to get all the maximum values from an iterator: def max_val(iterator, key=None): # ??? it = (i for i in range(4)) assert max_val(it, key=lambda i: i%2) == [1, 3] Note: th
Solution 1:
def max_val(iterator, key=None):
try:
ret = [iterator.next()]
except StopIteration:
return []
for val initerator:
ifkey(val) < key(ret[0]):
continue
elif key(val) == key(ret[0]):
ret.append(val)
else:
ret = [val]
return ret
One pass, passes your assertion.
It just keeps the best set it's found until it finds one better, then starts over.
Post a Comment for "Find All Items With Maximum Value Produced By An Iterator"