PTY wrote: > Bob Greschke wrote: > >><[EMAIL PROTECTED]> wrote in message >>news:[EMAIL PROTECTED] >> >>>PTY wrote: >>> >>>>Which is better? >>>> >>>>lst = [1,2,3,4,5] >>>> >>>>while lst: >>>> lst.pop() >>>> >>>>OR >>>> >>>>while len(lst) > 0: >>>> lst.pop() >>> >>>A dozen posts, but nobody has posted the right >>>answer yet, so I will :-) >>> >>>It doesn't matter -- use whichever you prefer (*) >>>This is an angels on the head of a pin issue. >>> >>>(*) -- If your code is part of an existing body of >>>code that uses one or the other style consistently, >>>then you should do the same. >>> >> >>I'd go even one step further. Turn it into English (or your favorite >>non-computer language): >> >>1. While list, pop. >> >>2. While the length of the list is greater than 0, pop. >> >>Which one makes more sense? Guess which one I like. CPU cycles be damned. >>:) >> >>Bob > > > > It looks like there are two crowds, terse and verbose.
Nope, there are two crowds: those who RTFM, and those who don't. > I thought terse > is perl style and verbose is python style. s/terse/cryptic/ s/verbose/readable/ Python is much more readable than Java because it's *less* verbose than Java. > BTW, lst = [] was not what > I was interested in :-) Nor is it the correct functional equivalent of your code snippet. > I was asking whether it was better style to > use len() or not. The idiomatic solution is clearly derivable from Python's language documentation : in a boolean context, empty lists (etc...) eval to False. FWIW, it's also more generic (you could have an object supporting pop() but not __len__()), less error-prone, and can allow optimisations (a container may know that it is empty without computing it's length). -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list