Many thanks; great information. Best, Gregory
Steven Bethard wrote: > guthrie wrote: > >> Steven Bethard wrote: >> >>> Why would ``x.len()`` be any more convenient than ``len(x)``? Your >>> preference here seems pretty arbitrary. >> >> -- Perhaps; >> but having all standard operations as a method seems more regular (to >> me), and allows a simple chained operation format of a series of >> method calls, instead of alternating prefix function calls, and >> post-fix method invocations; e.g. >> x.lower().strip().toList().sort().join() >> seems cleaner and simpler than the usage below, where the pre/post >> alternation is visually more complex. >> I think the mix of OO like methods, and global functions, is not ideal. > > > The advantage of a functional form over a method shows up when you write > a function that works on a variety of different types. Below are > implementations of "list()", "sorted()" and "join()" that work on any > iterable and only need to be defined once:: > > def list(iterable): > result = [] > for item in iterable: > result.append(item) > return result > > def sorted(iterable): > result = list(iterable) > result.sort() > return result > > def join(iterable): > # this is more efficient in C, where the string's buffer can be > # pre-allocated before iterating through the loop. > result = '' > for item in iterable: > result += item > return result > > Now, by providing these as functions, I only have to write them once, > and they work on *any* iterable, including some container object that > you invent tomorrow. > > If everything were methods, when you invented your container object > tomorrow, you'd have to reimplement these methods on your class. (Or > we'd have to introduce a Container class to provide them, and everyone > would have to inherit from that if they wanted to define a container.) > >>>> - Why doesn't sort() return a value? >>>> >>>> This would allow things like: >>>> key = '',join( list(word.lower().strip()).sort() ) >>> >>> >>> Use sorted(): >>> >>> key = ','.join(sorted(word.lower().strip())) >> >> -- Thanks! >> (Is the comma in ',' just a typo?) > > > No, the comma puts a comma between each item. I wasn't sure whether the > comma in your original was a typo for ''. or for ','. Of course if you > don't want the comma between each item, you should just use '' > > STeVe ----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==---- http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups ----= East and West-Coast Server Farms - Total Privacy via Encryption =---- -- http://mail.python.org/mailman/listinfo/python-list