Fastest way to max() list
David Di Biase
dave.dibiase at gmail.com
Fri Sep 26 22:16:13 CEST 2008
Apologies, it's been a long day for me. It works, just have to check if the
nazis I'm doing this for will allow me to use object and NumPy. ack.
On Fri, Sep 26, 2008 at 2:08 PM, Chris Rebert <clp at rebertia.com> wrote:
> On Fri, Sep 26, 2008 at 7:22 AM, David Di Biase <dave.dibiase at gmail.com>
> > Hi Chris,
> > Yeah I hear you on point A. but this the specification I was given, so I
> > have to follow it unfortunately. I've also been restricted and not
> > to use any other packages. I was using NumPy earlier (should have
> > that) but I was wondering if there was a simpler way. Is NumPy
> > even faster than just iterating and modifying the list directly?
> > Also if I'm creating an array then making it,
> Uh, this part of your sentence doesn't quite make sense...
> > why not just do a temporary
> > sort and capture the first and last values? Is this method you've
> > supposed to be faster?
> Well, unless you're going to use the rest of the sorted values at some
> point in your program and since you have a large quantity of data,
> yes, my way ought to be faster. Sorting the list is O(N*log(N)) while
> running max and min over the list is only O(N).
> > Dave
> > On Fri, Sep 26, 2008 at 12:42 AM, Chris Rebert <clp at rebertia.com> wrote:
> >> On Thu, Sep 25, 2008 at 8:57 PM, David Di Biase <dave.dibiase at gmail.com
> >> wrote:
> >> > I have a list with about 1000-1500 sub-lists which look like so:
> >> > list[-0.28817955213290786, 3.6693631467403929, 'H',
> >> >
> >> > The first and second values are Angstrom units specifying the location
> >> > of a
> >> > particle. What I'd like to do is determine the distance between the
> >> > smallest
> >> > and largest value in the arrays first position 0. I tried reading the
> >> > manual
> >> > for this but I don't see how it applies key or any of those other
> >> > commands
> >> > to the function. I could easily write a sort to do this and capture
> >> > first and last spots, but why do that when I can use max and min (if I
> >> > can
> >> > actually do that...).
> >> A. You should probably be using objects rather than arrays to
> >> represent your datapoints, so that they're more structured and it's
> >> more apparent what the values mean.
> >> B. Assuming by "distance" you meant "difference" and/or that the
> >> distance is only in 1 dimension:
> >> from operator import itemgetter
> >> firsts = map(itemgetter(0), main_list)
> >> distance = max(firsts) - min(firsts)
> >> >
> >> > So you wonderful Python gods, lay some knowledge on me. please? lol...
> >> >
> >> > while I'm at it, is there a way to modify an entire list without
> >> > to
> >> > produce a whole new one? For example now say I want to modify list
> >> > and
> >> > multiply it by some value. From what I understand previous version of
> >> > Python
> >> > allowed lists to be multiplied like matrices...now apparently it just
> >> > replicates the list. :-/ shucks...
> >> You just have to apply the transform to each list element individually
> >> (also, you might consider using NumPy [http://numpy.scipy.org/] if
> >> you're doing a lot of matrix manipulation):
> >> for lst in main_list:
> >> lst *= some_value
> >> Regards,
> >> Chris
> >> >
> >> > The first question would be useful to know, but the second question I
> >> > quite a bit of and the "best practice" would be really great to know!
> >> >
> >> > Thanks in advanced!
> >> >
> >> > --
> >> > http://mail.python.org/mailman/listinfo/python-list
> >> >
> >> --
> >> Follow the path of the Iguana...
> >> http://rebertia.com
> Follow the path of the Iguana...
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-list