Python for schleife?

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


Kacke103 
Beitragsersteller
 01.05.2022, 20:37

<3

0

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.


Kacke103 
Beitragsersteller
 01.05.2022, 20:33

Bro ich hab doch geschrieben das ich das weiß xD aber wofür wird diese Zahl denn eingesetzt?

0
jort93  01.05.2022, 20:34
@Kacke103

Kann man an dem kleinen Ausschnitt nicht sagen wofür die benutzt wird.

0
Kacke103 
Beitragsersteller
 01.05.2022, 20:35
@Kacke103

Also wofür schreibt man normalerweise etwas vor eine for schleife? Und was für Vorteile kann man davon haben?

0
jort93  01.05.2022, 20:45
@Kacke103

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.

0