Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!aioe.org!feeder.news-service.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'python,': 0.01; 'assign': 0.05; 'terry': 0.07; 'python': 0.07; 'conditional': 0.09; 'false,': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:80.91.229.12': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'received:lo.gmane.org': 0.09; 'am,': 0.14; 'wrote:': 0.14; 'boolean': 0.16; 'reedy': 0.16; 'true,': 0.19; 'jan': 0.22; 'subject:list': 0.22; 'header:In-Reply-To:1': 0.22; 'values': 0.23; 'similarly': 0.23; 'objects': 0.24; 'skip:b 20': 0.27; 'changed': 0.27; 'depends': 0.29; 'objects.': 0.31; 'whereas': 0.31; 'to:addr:python-list': 0.32; 'another': 0.32; '...': 0.32; 'expression': 0.33; 'using': 0.34; 'header:X -Complaints-To:1': 0.34; 'header:User-Agent:1': 0.35; 'two': 0.37; 'steven': 0.38; 'received:org': 0.38; 'to:addr:python.org': 0.39; 'header:Mime-Version:1': 0.39; 'header:Received:5': 0.40; 'domain': 0.40; 'convenience.': 0.60; 'truth': 0.65; "'if": 0.84; '[end': 0.84; '[quote]': 0.84; 'quote]': 0.84 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Terry Reedy Subject: Re: checking if a list is empty Date: Sat, 14 May 2011 16:53:39 -0400 References: <200e93c2-6b87-4113-9c6f-85815e51ea77@28g2000yqu.googlegroups.com> <4dc4b3c5$0$29991$c3e8da3$5496439d@news.astraweb.com> <931adaF9g1U1@mid.individual.net> <4dcc785e$0$29980$c3e8da3$5496439d@news.astraweb.com> <4dce31b3$0$29980$c3e8da3$5496439d@news.astraweb.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Gmane-NNTP-Posting-Host: rain.gmane.org User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Lightning/1.0b2 Thunderbird/3.1.10 In-Reply-To: <4dce31b3$0$29980$c3e8da3$5496439d@news.astraweb.com> X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 24 NNTP-Posting-Host: 82.94.164.166 X-Trace: 1305406436 news.xs4all.nl 81483 [::ffff:82.94.164.166]:60088 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:5386 On 5/14/2011 3:39 AM, Steven D'Aprano wrote: > Th money-quote as regards using arbitrary objects in truth tests: > > [quote] > All this changed with the introduction of the two-element > boolean domain {true, false} which provides the vocabulary > needed to assign values to boolean expressions: 3<4 is a > way for writing true, 3>4 is a way for writing false, > whereas the value of x>0 depends on the value of x ... > [end quote] > > > In Python, [1, 2, 3] is another way of writing true, and [] is another > way of writing false. Similarly with any other arbitrary objects. Another way to look at it is that Python automatically calls bool() on every expression in its two boolean or conditional contexts: 'if e:' and 'while e'. This is a boilerplate-removing, labor-saving convenience. Python has many such conveniences. -- Terry Jan Reedy