On Sun, Apr 12, 2009 at 8:53 AM, Tim Chase <python.l...@tim.thechases.com> wrote: >>> From the docs: >> >> all(iterable) >> Return True if all elements of the iterable are true. >> Equivalent >> to: >> def all(iterable): >> for element in iterable: >> if not element: >> return False >> return True > > Then I'd say the comment is misleading. An empty list has no item that is > true (or false), yet it returns true. The comment in the docs should read > "Return False if any element of the iterable is not true" or "Return True if > all elements of the iterable are true or if the iterable is empty."
I didn't knew about "Vacuous True" (my fault, it seems Discrete Math 101) until reading about on this thread (thanks everyone!), and reading on wikipedia it answered this exact question. > To get the behavior the original comment describes, would seem to require an > implementation something like this: > > def all(iterable): > iterable = iter(iterable) > try: > element = iterable.next() > except StopIteration: > raise UnderdefinedBecauseNoElementsToCompareToTrue > while element: > try: > element = iterable.next() > except StopIteration: > return True > return False > > > Tweaking the documentation seems like an easier and more backwards > compatible solution to me :) > > -tkc > > > > -- > http://mail.python.org/mailman/listinfo/python-list > -- Eduardo de Oliveira Padoan http://importskynet.blogspot.com http://djangopeople.net/edcrypt/ "Distrust those in whom the desire to punish is strong." -- Goethe, Nietzsche, Dostoevsky -- http://mail.python.org/mailman/listinfo/python-list