Elemente einer "mehrdimensionalen" Liste mit Schleife ändern

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
Issi91
User
Beiträge: 2
Registriert: Freitag 11. Juli 2014, 09:51

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 :wink:
Benutzeravatar
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:

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
BlackJack

@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.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

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
a fool with a tool is still a fool, www.magben.de, YouTube
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@MagBen: genau so nicht. i) feste Grenzen, ii) umständliche Iteration über Index iii) anderes Problem als der Fragensteller.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Sirius3 hat geschrieben:genau so nicht. i) feste Grenzen, ii) umständliche Iteration über Index iii) anderes Problem als der Fragensteller.
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
a fool with a tool is still a fool, www.magben.de, YouTube
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

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
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.
Issi91
User
Beiträge: 2
Registriert: Freitag 11. Juli 2014, 09:51

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.
:D
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Sirius3 hat geschrieben:Knappheit der Antwort soll nicht Unfreundlichkeit ausdrücken, sondern ist nur begrenzten Ressourcen geschuldet.
Nehme ich auch für mich in anspruch.

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.
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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
Die einfache Lösung habe ich ihm auszugsweise und BlackJack dann noch einmal deskriptiv geliefert! ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@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... :)
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Was du natürlich empirisch untersucht hast... :roll:
BlackJack

@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.
Antworten