Seite 1 von 1
Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 00:06
von Fiffio
Hallo,
ich will z.B. auf das zweite Element jeder Liste zugreifen.
Code: Alles auswählen
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for liste in a:
for element in liste[?][1]: # wie die Listen durchlaufen?
print("element",element)
element 2
element 5
element 8
Ich schaffe es aber nur "alle" Elemente der Listen auszugeben.
Code: Alles auswählen
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for liste in a:
for element in liste:
print("element",element)
element 1
element 2
element 3
element 4
element 5
element 6
element 7
element 8
element 9
Mit meiner Anfängerlogik würde ich das mit
liste[[ i ][ 1 ]] machen:
Code: Alles auswählen
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
i = 0
for liste in a:
i = i+1
for element in liste[[i][1]]:
print("Elemente aus Index 1:",element)
for element in liste[[i][1]]:
IndexError: list index out of range
Mit den Beiträgen zu "IndexError: list index out of range" im Netz, komme ich bis jetzt nicht weiter.
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 00:13
von __blackjack__
@Fiffio: Auf das zweite Element einer Liste greift man mit dem Index 1 zu. Da braucht man keine ``for``-Schleife zu.
Re: Mehrdimensionale Liste, for Schleife n-Index?
Verfasst: Dienstag 19. März 2019, 00:55
von Fiffio
@__blackjack__
Bei einer einzigen Liste verstehe ich das aber wie bei einer mehrdimensionale Liste? Ich will ja die verschiedenen Listen automatisch durchlaufen lassen. Mit
Code: Alles auswählen
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(a[0][1])
2
Und wie bekommt man automatisch Index 1 von Liste Nr.2 usw.?
Re: Mehrdimensionale Liste, for Schleife n-Index?
Verfasst: Dienstag 19. März 2019, 01:20
von Fiffio
Hab was gefunden:
https://stackoverflow.com/a/52615043
Code: Alles auswählen
l = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
l_len = len(l)
l_item_len = len(l[0])
for i in range(l_len):
for j in range(l_item_len):
print(f'List[{i}][{j}] : {l[i][j]}' )
List[0][0] : 1
List[0][1] : 2
List[0][2] : 3
List[1][0] : 4
List[1][1] : 5
List[1][2] : 6
List[2][0] : 7
List[2][1] : 8
List[2][2] : 9
List[3][0] : 10
List[3][1] : 11
List[3][2] : 12
Das muss ich nur noch verstehen. Wie bekommt man nur?
List[0][1] : 2
List[1][1] : 5
List[2][1] : 8
List[3][1] : 11
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 05:11
von kbr
Ach du liebe Güte,. Ein prima Beispiel, dass auch auf stackoverflow übler Code zu finden ist.
Nimm Deine ursprüngliche Liste a und schreibe:
Dann siehst Du recht schnell, was Du statt "print(item)" schreiben musst, um das jeweils zweite Element der Listen in a auszugeben.
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 07:39
von Sirius3
@kbr: In stackoverflow kann auch jeder fast alles schreiben, man wird nur schnell abgewertet und die Antwort mit den meisten Votes ist ja auch in Ordnung.
@Fiffio: Programmieren heißt auch, ein großes Problem in mehrere einfache Teilprobleme zu zerlegen, von denen man die Lösung schon kennt. Du hast zwei Teilprobleme:
1. das zweite Element einer Liste ausgeben
2. mit jeder Liste, die wiederum in einer Liste steckt, das selbe machen.
Für beide Teilprobleme hast Du hier schon die Lösung gezeigt, jetzt mußt Du sie nur noch kombinieren.
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 11:32
von Fiffio
Soweit komme ich jeweils an alle Listen und alle Elemente:
Code: Alles auswählen
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for listeX in a:
print("Einzelne Liste:",listeX)
for elementX in listeX:
# if listeX[][]
print("Element:",elementX)
# print(elementX[1][2])
Einzelne Liste: [1, 2, 3]
Element: 1
Element: 2
Element: 3
Einzelne Liste: [4, 5, 6]
Element: 4
Element: 5
Element: 6
Einzelne Liste: [7, 8, 9]
Element: 7
Element: 8
Element: 9
Aber bei der Frage, wie bekommt man nur das jeweils zweite Element? Steh ich wieder wie der Ochs vorm Berg.
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 12:16
von __blackjack__
@Fiffio: Du greifst einfach auf das zweite Element zu. Ohne eine Schleife, die braucht man dafür nicht. Stellen wir uns mal vor Du hast eine Liste die `listeX` heisst und Du willst das zweite Element ausgeben, und *nur* das, wie machst Du das?
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 12:52
von Fiffio
__blackjack__ hat geschrieben: Dienstag 19. März 2019, 12:16
@Fiffio: Du greifst einfach auf das zweite Element zu. ... wie machst Du das?
Bei einer einfachen Liste mit
Element-Index = 1 so:
Code: Alles auswählen
listeX = [1, 2, 3]
print("Elemente von listeX:",listeX[1])
Elemente von listeX: 2
Bei einer verschachtelten Liste mit
Listen-Index = 0 und
Element-Index = 1:
Code: Alles auswählen
listeY = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print("Elemente von listeY:",listeY[0][1])
Elemente von listeY: 2
Und jetzt habe ich ja alles mögliche probiert, wie man diese [
x][1] Listen-Position durchlaufen lassen könnte, damit ich von allen Listen das zweite Element bekomme. Warum wird das nirgends einfach beschrieben? Der Profi scheint verschachtelten Listen mit NymPy zu machen...
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 13:04
von randomuser
Fiffio hat geschrieben: Dienstag 19. März 2019, 12:52Warum wird das nirgends einfach beschrieben?
Ein sehr guter Hinweis wurde dir doch schon gegeben, hast du aber geschickt ignoriert. Also hier nochmal
kbr hat geschrieben: Dienstag 19. März 2019, 05:11
Nimm Deine ursprüngliche Liste a und schreibe:
Dann siehst Du recht schnell, was Du statt "print(item)" schreiben musst, um das jeweils zweite Element der Listen in a auszugeben.
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 13:09
von __blackjack__
@Fiffio: Dein Problem ist das Du immer noch an eine verschachtelte Liste denkst, dabei hast Du die *in* der äusseren Schleife gar nicht mehr. Du hast eine Schleife über die Elemente von der äusseren Liste. Und diese Elemente sind einfache, unverschachtelte Listen. Und zwar in jedem Schleifendurchlauf genau *eine* davon. Und auf das zweite Element *einer* Liste greift man ganz einfach mit `liste[1]` zu. Da brauchst Du weder eine Schleife noch irgendwie *noch* einen Index `x`. Du denkst Du müsstest da irgend etwas tun, was Du nicht musst.
Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 13:29
von Fiffio
Ja so geht es. Diese Lösung hatte ich aber eigentlich gestern schon mal probier:
Code: Alles auswählen
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for item in a:
print("Zweites Element der Listen in a:",item[1])
Zweites Element der Listen in a: 2
Zweites Element der Listen in a: 5
Zweites Element der Listen in a: 8
und bilde mir ein, dass immer solche Meldungen kamen:
Besten Dank. Dann war es doch nicht wirklich (nur) meine "Dyskalkulie".

Re: Mehrdimensionle Liste, for Schleife Index?
Verfasst: Dienstag 19. März 2019, 16:13
von DeaD_EyE
Wenn man jedes zweite Element anders interpretiert, ist der Gedanke an eine verschachtelte for-schleife nicht ganz falsch, aber trotzdem umständlich.
Nicht das zweite Element, sondern jedes zweite Element.
Code: Alles auswählen
a = [[1, 2, 3,10,20,30], [4, 5, 6,40,50,60], [7, 8, 9,70,80,90]]
for elements in a:
print(elements[1::2])
[2, 10, 30]
[5, 40, 60]
[8, 70, 90]
Das gleiche nochmal so ähnlich, aber zu umständlich.
Code: Alles auswählen
a = [[1, 2, 3,10,20,30], [4, 5, 6,40,50,60], [7, 8, 9,70,80,90]]
for elements in a:
for index, subelement in enumerate(elements, start=1):
if index % 2 == 0:
print(subelement, end=" ")
print()