Let’s say I have 2 lists in Python and I want to loop through each one in parallel – e.g. do something with element 1 for both lists, do something with element 2 for both lists… I know that I can do this by using an index:
for listIndex in range(len(list1)):
doSomething(list1[listIndex])
doSomething(list2[listIndex])
But is there a way to do this more intuitively, with a foreach loop? Something like for list1Value in list1, list2Value in list2…?
I’ve currently run into this situation in Python, but this is a longstanding question and I’d be interested to know if you can do this in any language. (I just assumed that Python is the most likely to have a method of dealing with this.)
Something like this?
Though if
doSomething()isn’t doing I/O or updating global state, and it just works on one of the elements at a time, the order doesn’t matter so you could just usechain()(from itertools):Apropos,
from itertools import *is something I do very often. Considerizip()instead of using thezip()I gave above. Also look intoizip_longest(),izip(count(), lst), etc. Welcome to functional programming. 🙂Oh, and zipping also works with more “columns”: