Hallo,
hoffe das Thema gibt es noch nicht. Mein Problem ist folgendes. Ich habe mir eine Liste a=[(1,2,3),(2,3,4),(4,5,6)] erstellt und möchte jetzt mit Hilfe einer For -Schleife bestimmte Elemente dieser Liste (z.B immer das weite Element - also die 2, die 3 und die 5) durch andere Zahlen ersetzen. könnt ihr mir da weiterhelfen ?
Ich weiß, dass ich einzelne elemente der Liste mit zb. a[1][1] auswählen kann, aber komme nicht drauf wie ich das ganze in eine Schleife packen soll.
Danke
Elemente einer "mehrdimensionalen" Liste mit Schleife ändern
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also zum einen hast Du als Elemente in der Liste Tupel; die sind unveränderlich. Du kannst natürlich ein neues Tupel erstellen und dieses an die Stelle des alten packen. Einfacher wäre es aber, einfach eine *neue* Liste mit jeweils neuen Tupeln zu generieren.
Oder dürfen es auch tatsächlich Listen als Elemente sein? Wenn ja, musst Du ja nur jeweils auf dem zweiten Element eine Zuweisung durchführen!
Und eine ``for``-Schleife zum Iterieren über eine Liste ist ja nun absolutes Basiswissen... aber ich bin nett und schreib 's Dir noch mal auf:
Oder dürfen es auch tatsächlich Listen als Elemente sein? Wenn ja, musst Du ja nur jeweils auf dem zweiten Element eine Zuweisung durchführen!
Und eine ``for``-Schleife zum Iterieren über eine Liste ist ja nun absolutes Basiswissen... aber ich bin nett und schreib 's Dir noch mal auf:
Code: Alles auswählen
for item in sequence:
# item ist das jeweilige Element der Sequenz
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@Issi91: Tupel kann man nicht verändern, also solltest Du aus den Elementen der Liste vielleicht erst einmal Listen machen.
Und dann brich das Problem auf kleinere Teilprobleme herunter. Wenn Du eine Liste mit drei Elementen hast, wie weist Du dem zweiten Element einen neuen Wert zu? Wie iteriert man über die Elemente einer Liste? Die beiden Fragen sollten nach einem Grundlagentutorial beantwortbar sein, und dann muss man das beides nur noch kombinieren.
Und dann brich das Problem auf kleinere Teilprobleme herunter. Wenn Du eine Liste mit drei Elementen hast, wie weist Du dem zweiten Element einen neuen Wert zu? Wie iteriert man über die Elemente einer Liste? Die beiden Fragen sollten nach einem Grundlagentutorial beantwortbar sein, und dann muss man das beides nur noch kombinieren.
Hier ein bisschen Beispielcode, der Dir zeigt wie Du nur bestimmte Elemente ändern kannst:
Code: Alles auswählen
a = [[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]]
print a
andererWert = 77
for i in range(4): # jede Zeile
for j in range(0,4,2): # jede zweite Spalte
a[i][j] = andererWert
print a
iv) lauffähiger Code, v) man sieht was der Code macht, vi) so kann das ja jeder, vii) es fehlt der Hinweis auf das Grundlagentutorial, viii) es fehlt der Hinweis, dass das ganze nicht OOP istSirius3 hat geschrieben:genau so nicht. i) feste Grenzen, ii) umständliche Iteration über Index iii) anderes Problem als der Fragensteller.
Ich sehe nicht, was diese Aufzählung mit irgendwas in diesem Thread zu tun hat. Gerade Anfängern sollte man gutes Python zeigen und sich nicht mit Lauffähig zufriedengeben. Wenn Dir durch meine Aufzählung nicht klar wird, was an Deinem Code nicht optimal ist, kannst Du gerne nachfragen. Knappheit der Antwort soll nicht Unfreundlichkeit ausdrücken, sondern ist nur begrenzten Ressourcen geschuldet.MagBen hat geschrieben:iv) lauffähiger Code, v) man sieht was der Code macht, vi) so kann das ja jeder, vii) es fehlt der Hinweis auf das Grundlagentutorial, viii) es fehlt der Hinweis, dass das ganze nicht OOP ist
Okay, wollte jetzt natürlich keine Diskussion auslösen. Habe gerade erst mit Python angefangen und bin gerade dabei mir die Grundlagen beizubringen. Danke für die schnelle Hilfe - und gut das keine kompletten Lösungen kommen =).
Natürlich gibt es immer mehrere Ansätze und zum Einstieg nehme ich gerne den Fußweg.
Natürlich gibt es immer mehrere Ansätze und zum Einstieg nehme ich gerne den Fußweg.
Nehme ich auch für mich in anspruch.Sirius3 hat geschrieben:Knappheit der Antwort soll nicht Unfreundlichkeit ausdrücken, sondern ist nur begrenzten Ressourcen geschuldet.
Ich habe den Eindruck, das hier im Forum Anfängern aus "pädagogischen Gründen" oftmals die einfache Lösung vorenthalten wird. Aber nicht jeder der hier fragt will Python lernen. Und viele die fragen wollen erst ihr Problem lösen und erst danach Python lernen.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Die einfache Lösung habe ich ihm auszugsweise und BlackJack dann noch einmal deskriptiv geliefert!MagBen hat geschrieben: Ich habe den Eindruck, das hier im Forum Anfängern aus "pädagogischen Gründen" oftmals die einfache Lösung vorenthalten wird
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@MagBen: Und was ist mit Leuten, die Monate später auf diesen Thread stoßen und eine "Hauptsache funktioniert"-Lösung zu Gesicht bekommen? Wie soll ein Anfänger überhaupt beurteilen können, ob es sich bei einer Lösung um idiomatisches Python handelt oder ob es nur hingepfuscht wurde (weil das in anderen Sprachen ja auch so funktioniert)? Willst du behaupten, jeder Anfänger ist an einer "Hauptsache funktioniert"-Lösung interessiert und dass ihm die elegante Lösung egal ist? Nichts für ungut, aber nur weil *du* offenbar deine Python-Programme mit einer anderen Intention schreibst, muss das nicht für alle Programmierer gelten. Insbesondere Leute, die ein echtes Interesse an Informatik haben, mögen nun mal elegante Lösungen, die sich an den Möglichkeiten der spezifischen Sprache orientieren. Und ich behaupte mal, das Forum hier mitsamt seiner regelmäßig aktiven Mitglieder orientiert sich vorwiegend an diesen Idealen und weniger am bloßen Pragmatismus. Welche Art der Lösung ein Fragesteller am Ende für sich auswählt, bleibt ihm natürlich selbst überlassen.
EDIT: Und wenn dir das nicht passt, dann bist du vielleicht in einem "Programmieren für Ingenieure"-Forum besser aufgehoben als hier...
EDIT: Und wenn dir das nicht passt, dann bist du vielleicht in einem "Programmieren für Ingenieure"-Forum besser aufgehoben als hier...
Was du natürlich empirisch untersucht hast...MagBen hat geschrieben:Aber nicht jeder der hier fragt will Python lernen. Und viele die fragen wollen erst ihr Problem lösen und erst danach Python lernen.
@MagBen: Wenn man in Python programmieren möchte, dann muss man das vorher lernen. Wenn man nicht in Python programmieren möchte, warum stellt man dann hier Fragen dazu? Falls jemand eine Komplettlösung haben möchte, ohne selbst etwas dafür zu tun, kann er das ja sagen.