How Can I Iterate Through Two Lists in Parallel?
I Have Two Iterables in Python, and I Want to Go over Them in Pairs: Foo = (1, 2, 3) Bar = (4, 5, 6) for (F, B) in Some_Iterator(Foo, Bar): Print("F: ", F, "...
I have two iterables in Python, and I want to go over them in pairs:
foo = (1, 2, 3)
bar = (4, 5, 6)
for (f, b) in some_iterator(foo, bar):
print("f: ", f, "; b: ", b)
It should result in:
f: 1; b: 4
f: 2; b: 5
f: 3; b: 6
One way to do it is to iterate over the indices:
for i in range(len(foo)):
print("f: ", foo[i], "; b: ", bar[i])
But that seems somewhat unpythonic to me. Is there a better way to do it?
7 Answers
Must Read
Python 3
for f, b in zip(foo, bar):
print(f, b)
zip stops when the shorter of foo or bar stops.
In Python 3, zip
returns an iterator of tuples, like itertools.izip in Python2. To get a list
of tuples, use list(zip(foo, bar)). And to zip until both iterators are
exhausted, you would use
itertools.zip_longest.