On Sat, Feb 20, 2010 at 1:50 PM, Kent Johnson <ken...@tds.net> wrote:

> On Sat, Feb 20, 2010 at 11:22 AM, Andrew Fithian <afit...@gmail.com>
> wrote:
> >  can
> > you help me speed it up even more?
> > import random
> > def sample_with_replacement(list):
> >     l = len(list) # the sample needs to be as long as list
> >     r = xrange(l)
> >     _random = random.random
> >     return [list[int(_random()*l)] for i in r]
>
> You don't have to assign to r, just call xrange() in the list comp.
> You can cache int() as you do with random.random()
> Did you try random.randint(0, l) instead of int(_random()*i) ?
> You shouldn't call your parameter 'list', it hides the builtin list
> and makes the code confusing.
>
> You might want to ask this on comp.lang.python, many more optimization
> gurus there.
>
> Also the function's rather short, it would help to just inline it (esp.
with Kent's modifications, it would basically boil down to a list
comprehension (unless you keep the local ref's to the functions), I hear the
function call overhead is rather high (depending on your usage - if your
lists are huge and you don't call the function that much it might not
matter.)
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to