Es findet ein Autorennen mit 3 Autos statt, bei dem die Autos nebeneinander starten. Ich möchte alle möglichen Startkombinationen ermitteln. (123, 321, 132 etc.)
Eine Liste mit allen möglichen Kombinationen, bei der die Autos auch doppelt starten könnten, ist recht einfach:
Code: Alles auswählen
l=['1','2','3']
kombi=[]
test=[1,0]
for i in range(3):
for j in range(3):
for k in range(3):
kombi=[l[i],l[j],l[k]]
print kombi
111
112
113
211
...
333
bei raus.
Jetzt möchte ich alle Kombinationen, in denen eine Zahl doppelt vorkommt, nicht ausgeben.
Code: Alles auswählen
l=['1','2','3']
kombi=[]
test=[1,0]
for i in range(3):
for j in range(3):
for k in range(3):
kombi=[l[i],l[j],l[k]]
for m in range(3):
kombi2=kombi
kombi3=kombi2
del kombi3[m]
if kombi2[m] in kombi3:
pass
else:
print kombi
kombi ist also gleich 121
also sind
kombi2 und kombi3 auch gleich 121.
Aus kombi3 wird die gerade zu überprüfende Stelle gelöscht; z.B. die erste. Also ist kombi3 = 21.
Wenn nun darin die zu überprüfende Stelle ist (if kombi2[m] in kombi3) soll diese Kombination nicht ausgegben werden; sonst schon.
Erstmal geht das nicht, weil der Index out of range sein soll.
Ich weiß aber nicht warum.
Ich habe mal eine lauffähige Version ausprobiert, die sich aber komplett unlogisch verhält:
Code: Alles auswählen
l=['1','2','3']
kombi=[]
test=[1,0]
for i in range(3):
for j in range(3):
for k in range(3):
kombi=[l[i],l[j],l[k]]
kombi2=kombi
kombi3=kombi2
print kombi2
del kombi3[0]
print kombi2
['1', '1', '1']
['1', '1']
...
['3', '3', '3']
['3', '3']
Doch wieso in Gottes Namen?
In diesem Schritt:
Code: Alles auswählen
print kombi2
del kombi3[0]
print kombi2
Und doch löscht er es nicht nur aus kombi3, sondern auch aus kombi2!
Meine These ist, dass Python spinnt
Vielleicht kann mir ja jemand helfen oder hat eine andere Lösung.
Danke schonmal!,
Gruß
peak