Seite 1 von 1

for schleife

Verfasst: Montag 30. November 2020, 01:25
von StevenB99

Code: Alles auswählen

liste=[8,8,9,6,5,4,7,8,9,3,9]
x=0
for x in liste:
    print(liste[x])

Ich verstehe den output nicht. 9,9,3,7,4,5,8,9,3 Wie funktioniert das? Ich komme nicht drauf. Index x geht von 0-10 und die liste von 1-11. Normalerweise müsste er doch eine 8 überspringen, weil er von 1 anfängt zu zählen. Kann mir einer bitte den output erklären? Z.b die doppelt 9 am anfang und die 3 in der dritten Stelle des outputs.

index "x" : 0=8, 1=8 , 2=9 , 3=6, 4=5 , 5=4, 6=7 , 7=8 u.s.w
Liste : 1=8, 2=8 , 3=9 , 4=6 , 5=5 , 6=4, 7=7, 8=8 u.s.w

Re: for schleife

Verfasst: Montag 30. November 2020, 02:54
von pillmuncher
Lass dir in der Schleife mal zusätzlich jedes x ausgeben, dann wird es vermutlich klarer.

Re: for schleife

Verfasst: Montag 30. November 2020, 07:04
von noisefloor
Hallo,

@StevenB99: du hast du offensichtlich mehrere falsche Denkansätz bzw. einige Verständnisprobleme mit den Grundlagen von Python.

Der Index bei Python is immer Null-basiert, d.h. das erste Element einer Liste, eines Tuples, eines "Iterables" hat immer die Null.

Die Zeile x=0 in deinem Code macht gar nichts, weil x in der nächsten Zeile direkt wieder mit `for x in liste` beim Iterieren über die Liste überschrieben wird.

Die iterierst _nicht_ über den Index sondern direkt über die Liste! Das macht man in Python auch so, nur dass du halt das aktuelle Element der Iteration als Index-Zugriff benutzt. Das funktioniert auch nur zufällig bei dir, weil die größte Zahl in der Liste 9 ist und die Liste noch ein Element am Index 9 (also an 10. Stelle) hat. Wenn liste=[4, 5, 6] oder liste=['a', 'b', 'c'] wäre, würdest du einen Fehler bekommen.

Der Code

Code: Alles auswählen

...
x = 0
for x in range(len(liste)):
    print(liste[x])
würde machen, was du erwartest - macht man aber nicht, dass ist in Python ein absolutes Anti-Pattern.

Wenn du aus irgendwelchen Gründen den Index brauchst, dann nutz' die enumerate-Funktion:

Code: Alles auswählen

...
for index, element in enumerate(liste):
    #do something
Gruß, noisefloor

Re: for schleife

Verfasst: Montag 30. November 2020, 09:15
von StevenB99
Also ist mein output zufällig?

Re: for schleife

Verfasst: Montag 30. November 2020, 09:18
von __deets__
Der ist nicht zufällig. Wieso willst du mit den Werten der Liste wieder als Index in sie selbst arbeiten? Welche Absicht steckt dahinter?

Re: for schleife

Verfasst: Montag 30. November 2020, 09:35
von sparrow
@StevenB99: Du vewendest eine Programmiersprache - also benutze sie auch zum debuggen. Der Vorteil von Python ist, dass man sich Dinge in der interaktiven Shell einfach ausprobieren kann. Warum machst du das nicht? Warum versuchst du nicht für jede einzelne Zeile herauszufinden, was sie tut - _nicht_ was du denkst, was sie tut? pillmuncher hat doch bereits vorgeschlagen, dass du dir mal die Werte anzeigen lassen sollst, die "x" in der Schleife zugewiesen werden:

Code: Alles auswählen

>>> liste=[8,8,9,6,5,4,7,8,9,3,9]
>>> for x in liste:
	print(x)

	
8
8
9
6
5
4
7
8
9
3
9
>>> 
x ist also beim ersten Durchlauf 8.
Also ist print(liste[x]) -> print(liste[8]) (im ersten Durchlauf)
Es ist also nicht zufällig, dass dann 9 ausgegeben wird, weil das 9. Element in der Liste die Ganzzahl 9 enthält. Und es ist da 9. Element, weil das erste Element den Index 0 hat.

Re: for schleife

Verfasst: Montag 30. November 2020, 09:52
von StevenB99
Ich habe es verstanden , danke vielmals. Es steckt keine Absicht dahinter @_deets_