On Wed, Mar 06, 2002 at 11:44:04PM -0800, Bob Miller wrote:
>class StatSample:
In Python 2.1 and earlier, you could have made this a sub-class of the
"UserList" class:
>>> class foo(UserList.UserList): pass
...
>>> l = foo()
>>> print l
[]
As I mentioned before, 2.2 includes the ability to subclass directly from
"list". Either of these options would prevent you from needing the __*__
and append() methods.
> def minimum(self):
> min = None
> for d in self:
> if min is None or min > d:
> min = d
> return min
You could do these as:
def minimum(self): return(min(self))
def maximum(self): return(max(self))
Or, simply done away with the methods and relied on the fact that the
min()/max() builtins will operate on sequences:
>>> list = [ 'a', 5, 1, 73 ]
>>> min(list)
1
>>> max(list)
'a'
> def mean(self):
> if len(self) == 0: raise
> sum = 0
> for d in self:
> sum += d
> return sum / len(self)
A common way of doing this is by using "reduce()", which takes a list and
applies a function to return a single value:
def mean(self):
sum = reduce(lambda x, y: x + y, self)
return(sum / len(self))
>for line in fileinput.input():
> timestamp = re.match(r'\[(\d+)\:(\d+)\:(\d+)\]', line)
> if timestamp:
> hr, min, sec = [int(n) for n in timestamp.groups()]
I would probably have done:
hr, min, sec = map(int, timestamp.groups())
map() is like reduce, but it instead of returning one value (the list
reduced to one value), it applies the function to every element and
returns a list of the new values. I mostly avoid the comprehension
syntax because I don't comprehend it. ;-)
># Calculate and print statistics.
>
>print len(ftimes), "frames"
>print "fastest:", time_format(ftimes.minimum()),
>print " slowest:", time_format(ftimes.maximum())
>print "mean:", time_format(ftimes.mean())
>print "standard deviation:", time_format(ftimes.std_deviation())
How about:
print '%d frames' % len(ftimes)
print 'fastest: %s slowest: %s' % ( time_format(ftimes.minimum()),
time_format(ftimes.maximum()) )
print 'mean: %s\nstandard deviation: %s' % ( time_format(ftimes.mean()),
time_format(ftimes.std_deviation()) )
or:
print '%d frames' % len(ftimes)
print 'fastest: %s slowest: %s\nmean: %s\nstandard deviation: %s' % \
map(time_format, min(ftimes), max(ftimes), ftimes.mean(),
ftimes.std_deviation())
Sean
--
The structure of a system reflects the structure of the organization that
built it. -- Richard E. Fairley
Sean Reifschneider, Inimitably Superfluous <[EMAIL PROTECTED]>
tummy.com - Linux Consulting since 1995. Qmail, KRUD, Firewalls, Python