Przede wszystkim chciałem powiedzieć, że mój tytuł prawdopodobnie nie opisuje poprawnie mojego pytania. Nie wiem, jak proces, który próbuję osiągnąć, jest nazywany, co sprawiło, że szukanie rozwiązania na stackoverflow lub google było bardzo trudne. Wskazówka dotycząca tego może mi już bardzo pomóc!Python: Połączenie w listach list (?)
To, co obecnie mam, to w zasadzie dwie listy z listami jako elementami. Przykład:
List1 = [ [a,b], [c,d,e], [f] ]
List2 = [ [g,h,i], [j], [k,l] ]
Te listy są zasadniczo wierzchołki grafu próbuję utworzyć później w moim projekcie, gdzie krawędzie mają być od List1 do lista2 wierszami.
Jeśli spojrzymy na pierwszym wierszu każdej z list, ja zatem:
[a,b] -> [g,h,i]
Jednakże chcę mieć assingments/krawędzie unikalnych elementów, więc muszę:
[a] -> [g]
[a] -> [h]
[a] -> [i]
[b] -> [g]
[b] -> [h]
[b] -> [i]
wynik Chcę mieć to kolejna lista, z tych unikalnych assigments jako elementów, tj
List3 = [ [a,g], [a,h], [a,i], [b,g], ...]
Czy istnieje jakiś elegancki sposób na przejście z List1 i List2 na Listę 3?
Sposób, w jaki chciałem tego dokonać, polega na przechodzeniu wiersz po wierszu, określaniu ilości elementów każdego wiersza, a następnie zapisywaniu klauzul i pętli w celu utworzenia nowej listy z wszystkimi możliwymi kombinacjami. To jednak wydaje się być bardzo nieefektywnym sposobem.
Wygląda jak chcesz, 'itertools. produkt "każdej pary" utworzony przez 'zip'ping (lub' itertools.izip' w 2.x) obie listy razem. – jonrsharpe
@jonrsharpe pobili mnie, ale zgadzam się, to jest praca dla itertools (https://docs.python.org/2/library/itertools.html) – firelynx
Dziękuję za komentarze, myślę, że to jest dokładnie to Szukałem! Poniżej wypróbowałem rozwiązanie przedstawione przez Cyber. – user4911943