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