Załóżmy, że mam listę 8 obiektów o numerach od 1-8.Python zapętla kombinacje 8 obiektów w 3 grupach, 3-3-2
Obiekty są umieszczane w trzech polach, 3 w jednym pudełku, 3 w innym pudełku, 2 w ostatnim polu. Według matematyki jest 8C3 * 5C3 = 560 sposobów na zrobienie tego. Chcę przelecieć tam 560 pozycji. Czy jest jakiś sposób w Pythonie, aby to zrobić?
Wynik powinien wyglądać następująco:
list=['12','345',678'], ['12','346','578'], ..., etc.
Zauważ, że ['12','345','678']
i ['12','354',876']
są traktowane tak samo do tego celu.
Chcę zrobić pętlę do tej listy. Czy jest jakiś sposób w Pythonie, aby to zrobić?
Oto rozwiązanie, które otrzymuję, ale wydaje się brzydkie.
import itertools
for c1,c2 in itertools.combinations(range(8),2):
l2=list(range(8))
l2.pop(c2)
l2.pop(c1)
for c3,c4,c5 in itertools.combinations(l2,3):
l3=l2[:]
l3.remove(c5)
l3.remove(c4)
l3.remove(c3)
c6,c7,c8=l3
print(c1,c2,c3,c4,c5,c6,c7,c8)
Jak próbowałeś go rozwiązać? jaki kod? – snapshoe
Możesz itertools http://docs.python.org/2/library/itertools.html i dodać trochę swojej własnej logiki. – Pramod
Muszę powiedzieć, że tak naprawdę nie rozumiem twojego pytania. –