any such thing as list interleaving?

Gonçalo Rodrigues op73418 at mail.telepac.pt
Sun Jul 13 00:12:24 CEST 2003


On Sat, 12 Jul 2003 14:00:49 -0700, Tom Plunket <tomas at fancy.org>
wrote:

>
>I find myself often doing the following sort of thing (sorry for
>lack of whitespace, I don't want the line to break):
>
>for entry, index in map(lambda e,i:(e,i),aList,range(len(aList)):
>   # ...
>
>This definitely seems like a roundabout way to loop through
>parallel lists together.  Is this map routine truly the easiest/
>best/most straight-forward way to do a for loop through parallel
>lists, if I feel that the Python anti-idom of:
>

Check the zip builtin:

>>> help(zip)
Help on built-in function zip:

zip(...)
    zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
    
    Return a list of tuples, where each tuple contains the i-th
element
    from each of the argument sequences.  The returned list is
truncated
    in length to the length of the shortest argument sequence.


>for index in range(len(myList)):
>   entry = aList(index)
>   anotherEntry = anotherList(index)
>   # ...
>
>???
>
>This also brings up a similar problem for me when iterating over
>dictionaries:
>
>for key in myDict:
>   value = myDict[key]
>   # ...
>

Fire the interpreter and type:

>>> help(dict)

As it's a long stretch of text, I'll just post the relevant part:

 |  iteritems(...)
 |      D.iteritems() -> an iterator over the (key, value) items of D
 |  

>This seems a pretty sloppy way to go about it, imo.  There must
>be something more in the Python spirit!  :)
>
>Thanks.
>
>-tom!

With my best regards,
G. Rodrigues




More information about the Python-list mailing list