Mittels for-Schleife Elemente in einer multidimensionalen Liste ändern
Verfasst: Mittwoch 5. Januar 2022, 07:49
Hey Pythonianer,
ich sitze zur Zeit vor folgendem Problem und hoffe, dass ihr mir mit eurem Wissen und eurer Erfahrung weiterhelfen könnt.
Gegeben sei eine Liste, die als Elemente wiederum Listen beinhaltet:
Das Ziel besteht nun darin, die str-Elemente innerhalb der sub-Listen ("8", "20") und ("21", "7") in int-Elemente umzuwandeln.
Phase 1: In einem ersten Schritt habe ich dies durch folgenden Code erreicht:
Phase 2: In einem zweiten Schritt habe ich mir anschließend die Frage gestellt, ob ich die beiden Anweisungen "i[1] = int(i[1])" und "i[2] = int(i[2])" mittels einer for-Schleife zusammenfassen kann, wie im folgenden Beispiel:
An diesem Punkt komme ich nicht weiter. Die Änderungen der inneren for-Schleife werden anscheinend nicht in die äußere for-Schleife übertragen:
Auf stackoverflow wurden ähnliche Thema behandelt (https://stackoverflow.com/q/52483266/17674191, https://stackoverflow.com/q/13752461/17674191). Demnach liegt das Problem anscheinend darin, dass bei der sub-Schleife eine Kopie der Liste erstellt wird. Jedoch gelang es mir nicht, die dortigen Lösungsansätze nachzuvollziehen oder speziell auf meine Fragestellung zu übertragen.
Ich stehe nun vor den Fragen:
(1) Was ist die Erklärung für meine Problemstellung?
(2) Falls das Problem tatsächlich darin liegt, dass in der sub-Schleife eine Kopie der Liste/des Elements erstellt wird, weshalb ist das nur in der sub-Schleife der Fall?
(3) Wie sieht eine mögliche Lösung für diese Problemstellung aus?
Ich freue mich sehr über eure Antworten und hoffe noch viel lernen zu können.
LG und ein schönes neues Jahr!
ich sitze zur Zeit vor folgendem Problem und hoffe, dass ihr mir mit eurem Wissen und eurer Erfahrung weiterhelfen könnt.
Gegeben sei eine Liste, die als Elemente wiederum Listen beinhaltet:
Code: Alles auswählen
t_liste = [["tag", "8", "20"], ["Nacht", "21", "7"]]
Phase 1: In einem ersten Schritt habe ich dies durch folgenden Code erreicht:
Code: Alles auswählen
for i in t_liste:
i[1] = int(i[1])
i[2] = int(i[2])
print(t_liste) #output: [["tag", 8, 20], ["Nacht", 21, 7]]
Code: Alles auswählen
for i in t_liste:
for n in i[1:]:
n = int(n)
Code: Alles auswählen
for i in t_liste:
for n in i[1:]:
n = int(n)
print(n) #output: 8; 20; 21; 7 --- Elemente werden wie gewünscht als int-Elemente ausgegeben
print(t_liste) # output: [["tag", "8", "20"], ["Nacht", "21", "7"]] --- Elemente werden als str-Elemente ausgegeben
Ich stehe nun vor den Fragen:
(1) Was ist die Erklärung für meine Problemstellung?
(2) Falls das Problem tatsächlich darin liegt, dass in der sub-Schleife eine Kopie der Liste/des Elements erstellt wird, weshalb ist das nur in der sub-Schleife der Fall?
(3) Wie sieht eine mögliche Lösung für diese Problemstellung aus?
Ich freue mich sehr über eure Antworten und hoffe noch viel lernen zu können.
LG und ein schönes neues Jahr!