On 27/09/2007, Casey <[EMAIL PROTECTED]> wrote: > On Sep 27, 12:48 pm, "Simon Brunning" <[EMAIL PROTECTED]> > wrote: > > On 9/27/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > > > > I tried writing a true and false If statement and didn't get > > > anything? I read some previous posts, but I must be missing > > > something. I just tried something easy: > > > > > a = ["a", "b", "c", "d", "e", "f"] > > > > > if "c" in a == True: > > > Print "Yes" > > > > > When I run this, it runs, but nothing prints. What am I doing wrong? > > > > Just use > > > > if "c" in a: > > > > and all will be well. The True object isn't the only truthy value in > > Python - see <http://docs.python.org/lib/truth.html>. > > I would recommend the OP try this: > > run the (I)python shell and try the following: > > >>> a = [x for x in "abcdefg"] > >>> a > ['a','b','c','d','e','f','g'] > >>> "c" in a > True > >>> "c" in a == True > False > >>> ("c" in a) == True > True > > The reason your conditional failed is that it was interpreted as "c" > in (a == True) which is False. > the "==" operator binds at a higher precedence level than the "in" > operator, just as multiplication > binds higher than addition >
Actually it evaluates '("c" in a) and (a == True)'. You can check like so: import dis a = list("abcdef") dis.dis(lambda: "c" in a == True) And just follow the bytecode operations. -- Richard. > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list