First of all I wanted to say that my title is probably not describing my question correctly. I don't know how the process I am trying to accomplish is called, which made searching for a solution on stackoverflow or google very difficult. A hint regarding this could already help me a lot!
What I currently have are basically two lists with lists as elements. Example:
List1 = [ [a,b], [c,d,e], [f] ]
List2 = [ [g,h,i], [j], [k,l] ]
These lists are basically vertices of a graph I am trying to create later in my project, where the edges are supposed to be from List1 to List2 by rows.
If we look at the first row of each of the lists, I therefore have:
[a,b] -> [g,h,i]
However, I want to have assingments/edges of unique elements, so I need:
[a] -> [g]
[a] -> [h]
[a] -> [i]
[b] -> [g]
[b] -> [h]
[b] -> [i]
The result I want to have is another list, with these unique assigments as elements, i.e.
List3 = [ [a,g], [a,h], [a,i], [b,g], ...]
Is there any elegant way to get from List1 and List2 to List 3?
The way I wanted to accomplish that is by going row by row, determining the amount of elements of each row and then write clauses and loops to create a new list with all combinations possible. This, however, feels like a very inefficient way to do it.
itertools.product
of each pair made byzip
ping (oritertools.izip
ping in 2.x) the two lists together. – Tonsillectomy