Mam trzy listy:
[0, 1, 2, 3, 4]
[0, 1, 2]
[0, 1, 2, 3]
Chciałbym teraz wylistować wszystkie kombinacje elementów tych list, czyli:
4 + 2 + 3
4 + 2 + 2
4 + 2 + 1
4 + 2 + 0
4 + 1 + 3
itd..
Jak to rozgryźć przy pomocy pętli?
Mam trzy listy:
[0, 1, 2, 3, 4]
[0, 1, 2]
[0, 1, 2, 3]
Chciałbym teraz wylistować wszystkie kombinacje elementów tych list, czyli:
4 + 2 + 3
4 + 2 + 2
4 + 2 + 1
4 + 2 + 0
4 + 1 + 3
itd..
Jak to rozgryźć przy pomocy pętli?
Trzy iteracje jedna w drugiej po każdej liście.
@GazelkaFarelka Bardziej mi się rozchodzi o dowolną liczbę takich list.
@SCC Nomć, dla stricte 3 list to zadziała. Może nie doprecyzowałem pytania - co zrobić, gdy mam n takich list podanych jako argument?
Dodam jeszcze, że kombinacja 4 + 2 + 0 =/= 4 + 0 + 2, wynikami nie mają być sumy (gdzie tutaj wyjdzie 6) tylko stringi
Ok, znalazłem rozwiązanie oparte o bibliotekę:
import itertools
a = [[0, 1, 2, 3, 4], [0, 1, 2], [0, 1, 2, 3]]
print(list(itertools.product(*a)))
Innaczej musiałem pytanie do gugla sformuować.
@Dalmierz_Ploza A ja zastanawiałem się, jak to zrobić na piechotę, jak sobie poradzić z tą kombinatoryką. Dobrze, że już ktoś wcześniej to zrobił.
@SCC A no, ja też już w głowie układałem jak kilka indeksów ze sobą połączyć xD Ale jak zacząłem nad tym myśleć to zacząłem z guglem kombinować bardziej.
@SCC to jest tak proste, że mi by się nie chciało szukać w google, jeśli listy to A, B i C
for a in A:
for b in B:
for c in
print (a+ ' + '+b+ ' + '+c)<br />
Jeśli chcesz mieć funkcję która zadziała dla dowolnej ilości list to iterujesz po pierwszej liście i w każdej iteracji wołasz tą samą funkcję rekurencyjnie tylko już bez tej jednej listy po której iterujesz.
Cięzko mi tu napisać w komentarzu bo wcięcia zjada. I podmienia niektóre litery na uśmieszki.
Zaloguj się aby komentować