Mean, median, and mode

Sean McIlroy sean_mcilroy at yahoo.com
Mon Dec 6 08:35:55 CET 2004


>>> mean = lambda x: sum(x)/len(x)
>>> median = lambda x: (max(x)-min(x))/2
>>> mode = lambda x: max([(x.count(y),y) for y in x])[1]

"Robert Brewer" <fumanchu at amor.org> wrote in message news:<mailman.7174.1102235108.5135.python-list at python.org>...
> (now that we have a meaningful subject line)
> 
> Alfred Canoy wrote:
> > >>  I'm just new to programming and would like to ask for help..
> > >>
> > >> Build a module that contains three functions that do the following:
> > >>
> > >>       a.. Compute the average of a list of numbers
> > >>       b.. Finds the statistical median value of a list of numbers
> > >>       c.. Finds the mode of a list of numbers
> > >>
> > >> Can you please give me clue how I should start solving the
> > >> following problem
> > >> below? Here's the source code that I did so far:
> > >>
> > >> # compute the average of a list of numbers:
> > >> # Keeps asking for numbers until 0 is entered
> > >> # Prints the average value
> > >>
> > >> count = 0
> > >> sum = 0
> > >> number = 1
> > >>
> > >> print 'Enter 0 to exit the loop'
> > >> while number != 0:
> > >>     number = input ('Enter a number: ')
> > >>     count = count + 1
> > >>     sum = sum + number
> > >> count = count -1
> > >> print ' The average is:', sum/count
> 
> For the mode, you might build a dictionary:
> 
> freq = {}
> while number != 0:
>     number = input ('Enter a number: ')
>     count = count + 1
>     sum = sum + number
>     try:
>         freq[number] += 1
>     except KeyError:
>         freq[number] = 1
> 
> ...then you can check for the largest value in that dictionary:
> 
> max = 0
> mode = None
> for k, v in freq.iteritems():
>     if v > max:
>         max = v
>         mode = k
> 
> I leave the rest in your capable hands... ;) Including the case where
> two numbers occur in equal frequencies. ;;)
> 
> 
> Robert Brewer
> MIS
> Amor Ministries
> fumanchu at amor.org



More information about the Python-list mailing list