lists = [[1,4,6,7,8],[2,3,3,5,5],[4,4,4,6,9]] # a list of N lists
indexes = [-1 for i in xrange(len(lists))] # for position keeping
maxes = [lists[i][indexes[i]] for i in xrange(len(lists))] # initialize big\
gest values
maxvalue = max(maxes) # find biggest
M = 3 # how many biggest values you need
result = []
for n in xrange(M):
pos = maxes.index(maxvalue) # find position of biggest value
result.append(maxvalue) # add biggest to result
indexes[pos] = indexes[pos] - 1 # move to next in list that had biggest
maxes[pos] = lists[pos][indexes[pos]] # update the added value
maxvalue = max(maxes) # find new biggest
print result