Es gibt in einer Liste N Einträge, jeder der N Einträge hat eine Unterliste mit L Einträgen. Jeder Eintrag soll ein mal mit jedem anderen gelistet werden
Bsp. [[A,[a1]], [B,[b1,b2]], [C,[c1,c2]]]
Daraus soll die Liste:
[a1,[a1,b1],[a1,b2],[a1,c1],[a1,c2],[a1,b1,c1],[a1,b1,c2], [a1,b2,c1], [a1,b2,c2],b1, [b1,c1],[b1,c2],b2,[b2,c1],[b2,c2],c2]
generiert werden. Das Programm soll aber für eine beliebige Anzahl von N Einträgen funktionieren.
Ich denke mit einer rekursiven Funktion könnte man dem Herr werden, aber ich komme einfach nicht drauf wie diese aussehen muss
Seit zwei Tagen versuche ich jetzt schon eine Lösung zu programmieren, musste aber jeden Code wieder löschen…
Mein letzter Stand:
Code: Alles auswählen
def try3():
a=['a1', 'a2', 'a3']
b=['b1','b2']
c=['c1', 'c2', 'c3']
savList=[['A', a],['B', b], ['C', c]]
entryList=[]
timesToIterate=len(savList)
#iterate over A, B, C
for iConfigs in range(timesToIterate):
#iterate over entries of A, B, C
for firstSa in range(len(savList[iConfigs][1])):
#add every single entry of A, B, C solely
entryList.append(savList[iConfigs][1][firstSa])
#if more than one entry in list (more than A) add entries of B and C and...
if timesToIterate>1:
for nextConfig in range(1,len(savList)-1):
#number of entries per Config A:3, B:2, C:3
numberSAsPerConfig=len(savList[nextConfig][1])
#do only, if not the last (this case C)
if iConfigs<timesToIterate-1:
#first add entry from first entry (A, so add a1)
appendTemp.append(savList[iConfigs][1][firstSa])
#than add all other configs
...??recursive funtion here??
...
entryList.append(appendTemp)
print str(entryList)
Vielen Dank