Am Donnerstag, 31. Juli 2008 13:09:57 schrieb ssecorp: > def str_sort(string): > s = "" > for a in sorted(string): > s+=a > return s > > > if i instead do: > > def str_sort(string): > s = "" > so = sorted(string) > for a in so: > s+=a > return s > > > will that be faster or the interpreter can figure out that it only has > to do sorted(string) once? or that kind of cleverness is usually > reserved for compilers and not interpreters?
In a statement of the form for <name> in <iterable>: the expression <iterable> will only be evaluated once (to retrieve an iterator), so basically, both ways of stating it are equivalent and make negligible difference in runtime (the second version will be slower, because you have additional code to assign/fetch a local). Anyway, if you care about speed, probably: def str_sort(string): return "".join(sorted(string)) will be the fastest way of stating this. -- Heiko Wundram -- http://mail.python.org/mailman/listinfo/python-list