Tupel in Liste umwandeln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hubgra
User
Beiträge: 53
Registriert: Donnerstag 20. Juli 2023, 17:20

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]))

__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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?
hubgra
User
Beiträge: 53
Registriert: Donnerstag 20. Juli 2023, 17:20

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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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:
Antworten