Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #54302

Re: Having both if() and for() statements in one liner

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!news.stack.nl!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail
Return-Path <python.list@tim.thechases.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.012
X-Spam-Evidence '*H*': 0.98; '*S*': 0.00; 'subject:both': 0.07; 'logic': 0.09; 'runtime': 0.09; 'def': 0.12; '-tkc': 0.16; 'argument,': 0.16; 'evaluated.': 0.16; 'from:addr:python.list': 0.16; 'from:addr:tim.thechases.com': 0.16; 'from:name:tim chase': 0.16; 'iterable': 0.16; 'iterable:': 0.16; 'nay': 0.16; 'range(0,': 0.16; 'wrote:': 0.18; 'written': 0.21; 'header:In- Reply-To:1': 0.27; 'said,': 0.30; 'statement': 0.30; 'run': 0.32; 'something': 0.35; 'test': 0.35; 'but': 0.35; 'there': 0.35; 'subject:one': 0.36; 'yield': 0.36; 'charset:us-ascii': 0.36; 'form,': 0.38; 'to:addr:python-list': 0.38; 'to:addr:python.org': 0.39; 'even': 0.60; 'cost.': 0.60; 'times': 0.62; 'dont': 0.67; 'received:50.22': 0.84; 'canonical': 0.91
Date Tue, 17 Sep 2013 09:17:44 -0500
From Tim Chase <python.list@tim.thechases.com>
To python-list@python.org
Subject Re: Having both if() and for() statements in one liner
In-Reply-To <l19kvs$m4q$1@dont-email.me>
References <l19gdf$psh$1@dont-email.me> <roy-7F8454.09003417092013@news.panix.com> <l19kvs$m4q$1@dont-email.me>
X-Mailer Claws Mail 3.8.1 (GTK+ 2.24.10; x86_64-pc-linux-gnu)
Mime-Version 1.0
Content-Type text/plain; charset=US-ASCII
Content-Transfer-Encoding 7bit
X-AntiAbuse This header was added to track abuse, please include it with any abuse report
X-AntiAbuse Primary Hostname - boston.accountservergroup.com
X-AntiAbuse Original Domain - python.org
X-AntiAbuse Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse Sender Address Domain - tim.thechases.com
X-Get-Message-Sender-Via boston.accountservergroup.com: none
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.15
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.73.1379427403.18130.python-list@python.org> (permalink)
Lines 42
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1379427403 news.xs4all.nl 15950 [2001:888:2000:d::a6]:53217
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:54302

Show key headers only | View raw


On 2013-09-17 16:21, Ferrous Cranus wrote:
> I just want to say tot he program that
> 
> that only run the for statement if and only if person=='George'
> 
> I dont see nay reason as to why this fails
> 
> perhaps like:
> 
> for times in range(0, 5) if person=='George':
> 
> but that fails too...
> there must be written on soem way.

The canonical way to do this is the obvious:

  if person == "George":
    for times in range(0, 5):
      ...

That said, you can do stupid things to abstract the logic like

  def iterate_if(condition, iterable):
    if condition:
      for item in iterable:
        yield item

which you can use something like

  for times in iterate_if(person == "George", range(0,5)):
    ...

but I don't advise it.  Mainly, because the iterable will be
evaluated when passed as an argument, which incurs the runtime cost.
In the canonical form, if the test isn't passed, the range(n,m) is
never even evaluated.

-tkc



Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Having both if() and for() statements in one liner Ferrous Cranus <nikos.gr33k@gmail.com> - 2013-09-17 15:02 +0300
  Re: Having both if() and for() statements in one liner Robert Kern <robert.kern@gmail.com> - 2013-09-17 13:52 +0100
  Re: Having both if() and for() statements in one liner Roy Smith <roy@panix.com> - 2013-09-17 09:00 -0400
    Re: Having both if() and for() statements in one liner Ferrous Cranus <nikos.gr33k@gmail.com> - 2013-09-17 16:21 +0300
      Re: Having both if() and for() statements in one liner Heiko Wundram <modelnine@modelnine.org> - 2013-09-17 15:46 +0200
      Re: Having both if() and for() statements in one liner Tim Chase <python.list@tim.thechases.com> - 2013-09-17 09:17 -0500
      Re: Having both if() and for() statements in one liner Joel Goldstick <joel.goldstick@gmail.com> - 2013-09-17 10:32 -0400
      Re: Having both if() and for() statements in one liner Dave Angel <davea@davea.name> - 2013-09-17 18:54 +0000
        Re: Having both if() and for() statements in one liner Steven D'Aprano <steve@pearwood.info> - 2013-09-18 02:10 +0000
          Re: Having both if() and for() statements in one liner Joshua Landau <joshua@landau.ws> - 2013-09-18 06:55 +0100
          Re: Having both if() and for() statements in one liner Chris Angelico <rosuav@gmail.com> - 2013-09-18 17:00 +1000
    Re: Having both if() and for() statements in one liner Chris Angelico <rosuav@gmail.com> - 2013-09-18 01:04 +1000
    Re: Having both if() and for() statements in one liner Joel Goldstick <joel.goldstick@gmail.com> - 2013-09-17 11:15 -0400

csiph-web