[Tutor] iterating over a sequence question..
Luke Paireepinart
rabidpoobear at gmail.com
Sun Jun 17 11:13:47 CEST 2007
Alan Gauld wrote:
> "Iyer" <maseriyer at yahoo.com> wrote
>
>
>> Any pythonic way to iterate over a sequence, while iterating
>> over another shorter sequence continously
>>
The first thing that occurred to me was just to use a modulus to index
into the second, shorter list.
>>> l = [1,2,3,4,5]
>>> t = ('r','g','b')
>>> for i in range(len(l)):
print (l[i], t[i%len(t)])
which results in
(1, 'r')
(2, 'g')
(3, 'b')
(4, 'r')
(5, 'g')
not exactly Pythonic either, and you are assuming that l is longer than
t (it is easy to account for opposite case as well.)
a more expanded version that accounts for either list being the longer
one, or both being the same length, would be:
>>> if len(t) > len(l): x = len(t)
else: x = len(l)
>>> print [(l[i%len(l)],t[i%len(t)]) for i in range(x)]
[(1, 'r'), (2, 'g'), (3, 'b'), (4, 'r'), (5, 'g')]
-Luke
More information about the Tutor
mailing list