Python for schleife?
Hi, ich beschäftige mich seit ca. 4 Wochen mit python und bin auch schon relativ weit voran gekommen. Jetzt hab ich aber letztens mal etwas vor einer for schleife gesehen was ich nicht so recht verstanden hab...Bsp.:
X = random.randint(0,200) for _ in range(10000) ... was bewirkt dieses random.randint(0,200)? Was die Funktion macht weiß ich(also random.randint...), aber nicht in diesem Kontext...Bisher kannte ich bei einer for schleife praktisch nur for i in ... was ich auch verstanden hab... wäre für eine verständliche Antwort dankbar :)
3 Antworten
So wird das einen Fehler werfen, es fehlt noch die Angabe, um welche Datenstrutkur es sich handelt. Das wird primär mit entsprechenden Klammern um den Ausdruck dargestellt
Sonst: Das ganze nennt sich List Comprehension für Listen, Set Comprehension für Sets usw ... Es ist eine kürzere Art und Weise, "einfache" Schleifen in einem Einzeiler zu verpacken. Einfach hierbei in soweit, dass es ein Statement abarbeitet und nicht, wie in Komplexeren fällen, viele Statements pro Iteration durchlaufen werden (wobei man da auch entsprechende Funktionen schreiben kann, die dann in der List Comprehension aufgerufen werden)
Für eine List Comphrehension wäre die Syntax in deinem Beispiel so:
X = [random.randint(0,200) for _ in range(10000)]
Das sagt aus, dass in der Variable "X" eine Liste mit 10.000 zufälligen Integer-Einträgen zwischen 0 und 200 gespeichert wird
_ ist hierbei ein Platzhalter für die Schleifenvariable - da diese nicht gebraucht wird, muss man diese auch nicht deklarieren.
Ich lass dir einfach mal das hier da:
https://docs.python.org/3/tutorial/datastructures.html
https://www.w3schools.com/python/python_lists_comprehension.asp
Also...
X = random.randint(0,200) for _ in range(10000)
... funktioniert so nicht. Das liefert einen Syntax-Error.
Was möglich wäre, wäre...
X = [random.randint(0,200) for _ in range(10000)]
Das liefert dann eine Liste mit 10000 Einträgen, wobei jeder Eintrag eine zufällige ganze Zahl im Bereich von 0 bis 200 ist.
Die Zählvariable _ wird hier nirgends eingesetzt. Wofür auch? Man möchte jedes mal gleichermaßen eine Zufallszahl aus dem Bereich 0 bis 200 haben, wofür der Wert der Zählvariable nicht relevant ist.
Übrigens: Allgemein verwendet man in Python häufig die Variable _ für etwas, was man im Folgenden gar nicht mehr benötigt, aber wofür man trotzdem von der Syntax her erst einmal eine eine Variablenbezeichnung benötigt.
random.randint(0,200) erzeugt einen Integer zwischen 0 und 200.
Größerer Ausschnitt wäre gut., Und vorallem richtig formatiert.
So wie du es da stehen hast kann es nur
X = random.randint(0,200)
for _ in range(10000):
...
sein.
Da ist dann X einfach ein zufälliger interner den du für irgendwas benutzen kannst.
Die Zuweisung hat da nicht mit der Schleife zu tun.
Außer du hast halt völlig falschen Code in die Frage geschrieben.
Bro ich hab doch geschrieben das ich das weiß xD aber wofür wird diese Zahl denn eingesetzt?