concise code (beginner)

Daniel Larsson daniel.j.larsson at gmail.com
Wed Sep 5 15:55:52 EDT 2007


On 9/5/07, Karthik Gurusamy <kar1107 at gmail.com> wrote:
>
> On Sep 5, 11:17 am, James Stroud <jstr... at mbi.ucla.edu> wrote:
> > bambam wrote:
> > > I have about 30 pages (10 * 3 pages each) of code like this
> > > (following). Can anyone suggest a more compact way to
> > > code the exception handling? If there is an exception, I need
> > > to continue the loop, and continue the list.
> >
> > > Steve.
> >
> > > -----------------------------------
> > > for dev in devs
> > >     try:
> > >         dev.read1()
> > >     except
> > >         print exception
> > >         remove dev from devs
> >
> > > for dev in devs
> > >     try:
> > >         dev.read2()
> >
> > [etc.]
> >
> > My keen sense of pattern recognition tells me that all of your read's
> > follow the same naming pattern--or was that just an accidental naming
> > coincidence on your part for the sake of example?
> >
> > for i in xrange(number_of_reads):
> >    for dev in devs:
> >      try:
> >        _reader = getattr(dev, 'read%d' % i)
> >        _reader()
> >      except Exception, e:
> >        print e
> >        devs.remove(dev)
>
> I see in many of the solutions suggested above, the devs sequence/
> iterator is being modified while iterating. I know it is not defined
> for interation over dictionary keys. Are they defined for other
> collections like lists?
>
> Karthik


You're  right, that's a bad thing. You should collect the "bad" devs in a
separate list, and remove them outside the loop.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20070905/a2f2ea65/attachment.html>


More information about the Python-list mailing list