If you want the effect of a nested for loop, use:
import itertools for i, j in itertools.product(range(x), range(y)): # Stuff...
If you just want to loop simultaneously, use:
for i, j in zip(range(x), range(y)): # Stuff...
Note that if
y are not the same length,
zip will truncate to the shortest list. As @abarnert pointed out, if you don’t want to truncate to the shortest list, you could use
Based on the request for “a function that will read lists “t1” and “t2″ and return all elements that are identical”, I don’t think the OP wants
product. I think they want a
def equal_elements(t1, t2): return list(set(t1).intersection(set(t2))) # You could also do # return list(set(t1) & set(t2))
intersection method of a
set will return all the elements common to it and another set (Note that if your lists contains other
lists, you might want to convert the inner
tuples first so that they are hashable; otherwise the call to
set will fail.). The
list function then turns the set back into a list.
OR, the OP might want elements that are identical in the same position in the lists. In this case,
zip would be most appropriate, and the fact that it truncates to the shortest list is what you would want (since it is impossible for there to be the same element at index 9 when one of the lists is only 5 elements long). If that is what you want, go with this:
def equal_elements(t1, t2): return [x for x, y in zip(t1, t2) if x == y]
This will return a list containing only the elements that are the same and in the same position in the lists.