How do I let a function accept a variable number of lists:

scott smarsh at hotmail.com
Wed May 30 02:40:22 CEST 2001


I'm trying out the (very nice) stats module from
http://www.nmr.mgh.harvard.edu/Neural_Systems_Group/gary/python.html 
I'm using Win NT4 and  Python 2.0:

----------------------------------------
import pstat, stats


def DoAnova():
    ''' A command line interface to calculate one-way ANOVA. '''
    numPoints = input('How many data points in each group? ')
    numGroups = input('How many groups are there (2 minimum)? ')
    li = [0]
    for i in range(numGroups - 1):
        li.append(0)
    for i in range(numGroups):
        li[i] = [0]*numPoints
    for group in range(numGroups):
        for point in range(numPoints):
            li[group][point] = input('Enter a data point: ')
    print li
                          
    x = stats.F_oneway(li[0], li[1])
    print x

DoAnova()
---------------------------------------

Problem:
The above works properly for 2 lists ONLY. e.g.: [1,2], [3,4]
It returns:
[[1, 2], [3, 4]]
(8.0, 0.10557280898846583)  

The problem is this line:
x = stats.F_oneway(li[0], li[1])

I've just set it to accept the first two lists.
The docstring for lF_oneway includes:
"Usage:   F_oneway(*lists)   where *lists is any number of lists, one
per treatment group" 

Question:
How do I automatically pass the correct number of lists to
stats.F_oneway()?

If I could turn the list of lists into a series of lists i.e:
li = [[1, 2], [3, 4], [5,6]] --> li = [1,2], [3,4], [5,6]]
then I could presumably just pass li.  

Thanks in advance.



More information about the Python-list mailing list