Seite 1 von 1

Tupel in Liste umwandeln

Verfasst: Freitag 25. August 2023, 15:15
von hubgra
Der Umgang mit Permutationen ist schwierig.

Code: Alles auswählen

perm = permutations([1,2,3])
p = list(perm) #umwandeln in Liste von Tupeln
pl = []        #Tupel als Liste soll in neue Liste eingefügt werden
for i in p:
        print(type(i))
               #Ausgabe: <class 'tuple'>
               #aber p ist doch eine Liste
        print(type(p[i]))
               #hier Fehlermeldung 
        pl.append(list(p[i]))


Re: Tupel in Liste umwandeln

Verfasst: Freitag 25. August 2023, 15:19
von __deets__
p ist eine Liste von Tupeln.

Code: Alles auswählen

for etwas in sequenz
iteriert ueber die Eintraege in Sequenz. Eine Permutation ist ein Tupel. Dein i wird also nacheinander an alle Permutionen aus p gebunden, und das sind Tupel.
ist quatsch. p ist eine Liste, mit Index 0-<laenge-1>. i ist eine Permutation, zB (1, 1, 1). Also kein Element der Schluesselmenge der Liste.

Wenn du aus einem Tupel eine Liste machen willst, rufst du

list(tupel)

auf, und in deinem Fall also nur

Code: Alles auswählen

pl.append(list(i))
Oder kompakt

Code: Alles auswählen

pl = [list(e) for e in p]
Wobei das ziemlich sinnlos aussieht,warum muss das Tupel eine Liste werden?

Re: Tupel in Liste umwandeln

Verfasst: Freitag 25. August 2023, 15:30
von hubgra
Danke, so ein Ausdruck wie list(i) kam mir bisher nicht vor. Das wird wohl helfen.
Ich möchte Sudoku(-Lösungen) entwerfen, daraus kann man dan Aufgaben herstellen.
Und so habe ich einen Zugriff auf alle Permutationen.

Re: Tupel in Liste umwandeln

Verfasst: Freitag 25. August 2023, 15:46
von __deets__
Ein Nachteil, wenn man unpassende Namen wählt. i impliziert eine Zahl, und ist bei dir ein Tupel, genauer eine deiner Permutationen. Hättest du statt p permutationen und dann ein Element permutation genannt, währe das ggf direkt aufgefallen.

Code: Alles auswählen

for permutation in permutationen: