Iteration weirdness

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Dave Opstad

    Iteration weirdness

    I'm running into a strange behavior under Python 2.3.3:

    ------------------------------------------[color=blue][color=green][color=darkred]
    >>> d = {-1: 'cv', -2: 'se', -3: 'se'}
    >>> d[/color][/color][/color]
    {-1: 'cv', -2: 'se', -3: 'se'}[color=blue][color=green][color=darkred]
    >>> len(d)[/color][/color][/color]
    3[color=blue][color=green][color=darkred]
    >>> [d[-1], d[-2], d[-3]][/color][/color][/color]
    ['cv', 'se', 'se'][color=blue][color=green][color=darkred]
    >>> [d[-1-i] for i in len(d)][/color][/color][/color]
    Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    TypeError: iteration over non-sequence
    ------------------------------------------

    Can someone enlighten me as to why the list comprehension gives an
    error, but the simple list construction case works fine?

    Thanks for any help!
    Dave Opstad
  • Dave Opstad

    #2
    Re: Iteration weirdness

    In article <dave.opstad-DE5822.10313102 062004@reader09 03.news.uu.net> ,
    Dave Opstad <dave.opstad@ag famonotype.com> wrote:
    [color=blue]
    > I'm running into a strange behavior under Python 2.3.3:
    >
    > ------------------------------------------[color=green][color=darkred]
    > >>> d = {-1: 'cv', -2: 'se', -3: 'se'}
    > >>> d[/color][/color]
    > {-1: 'cv', -2: 'se', -3: 'se'}[color=green][color=darkred]
    > >>> len(d)[/color][/color]
    > 3[color=green][color=darkred]
    > >>> [d[-1], d[-2], d[-3]][/color][/color]
    > ['cv', 'se', 'se'][color=green][color=darkred]
    > >>> [d[-1-i] for i in len(d)][/color][/color]
    > Traceback (most recent call last):
    > File "<stdin>", line 1, in ?
    > TypeError: iteration over non-sequence
    > ------------------------------------------
    >
    > Can someone enlighten me as to why the list comprehension gives an
    > error, but the simple list construction case works fine?
    >
    > Thanks for any help!
    > Dave Opstad[/color]

    Never mind, brain freeze on my part. Should have been:

    [d[-1-i] for i in range(len(d))]

    Sigh...sorry to bother everyone.

    Dave

    Comment

    Working...