Jeremy Bowers wrote:
On Fri, 04 Feb 2005 16:44:48 -0500, Daniel Bickett wrote:
[ False , False , True , None ]
False would be returned upon inspection of the first index, even though True was in fact in the list. The same is true of the code of Jeremy Bowers, Steve Juranich, and Jeff Shannon. As for Raymond Hettinger, I can't even be sure ;)
Nope.
Indeed. Similarly for mine, which was really just a slight transform of Jeremy's (setting a return variable directly, instead of setting a flag that's later used to decide what to return):
>>> def tfn(lst): ... answer = None ... for item in lst: ... if item is True: return True ... if item is False: answer = False ... return answer ... >>> list = [False, False, True, None] >>> tfn(list) 1 >>> list = [None, False, False, None] >>> tfn(list) 0 >>> list = [None, None, None, None] >>> print tfn(list) None >>> >>>
The noted logical flaw *has* been present in a number of proposed solutions, however.
The key point to note is that one *must* examine the entire list *unless* you find a True; short-circuiting on False means that you may miss a later True.
Jeff Shannon Technician/Programmer Credit International
-- http://mail.python.org/mailman/listinfo/python-list