On Mon, 20 Jun 2005 17:23:27 -0700, James Stroud wrote: > By the way, ignore any posts talking about speed of execution. This is > generally a non-issue for new programmers. If you want your code to run > faster, buy a faster computer.
Oooh, red rag to a bull. Not everybody can afford to buy a faster computer to try to make their sort function run as quickly as Python's built-in sort. def newbie_sort(s): """Sort lines of string s, considering that speed of execution is a non-issue. """ # split s into lines L = [] while "\n" in s: p = s.find("\n") L = L + [s[0:p]] s = s[p+1:] L = L + [s] # sort the lines for passes_remaining in range(len(L)-1, 0, -1): for p in range(passes_remaining): if L[p] > L[p+1]: temp = L[p] L[p] = L[p+1] L[p+1] = temp # re-join the lines back into a single string s = L[0] del L[0] for line in L: s = s + "\n" + line return s def better_sort(s): """Sort lines of string s the right way. """ L = s.split("\n") L.sort() return "\n".join(L) The first function, newbie_sort, is good for only one thing: to be a horrible example of how inefficient and slow Python can be. It is also remarkably similar to a lot of my early Python programs. I think a better way of putting what James tried to get across is, don't be too concerned about writing fast code until you have learnt the basics of the language. Get the code WORKING first, and FAST second. (And frequently, the best way to get it working is also the best way to have it run fast.) -- Steven. -- http://mail.python.org/mailman/listinfo/python-list