Seite 1 von 1

FOR-Startwert setzen

Verfasst: Donnerstag 6. September 2007, 02:36
von snatch
Hallo,
ist es möglich in einer FOR-Schleife den Startwert zu setzen? Also das in der FOR-Schleife nicht bei 0 sondern bei dem gesetzen Wert angefangen wird zu zählen.
Wenn ja wie?

Ich habe schon ausprobiert die Variable einfach vorher zu setzen, nur leider klappt es nicht.

mfg snatch

Verfasst: Donnerstag 6. September 2007, 04:22
von BlackVivi

Code: Alles auswählen

for i in xrange(20,40):
    print i,
Du solltest dir aber auf jedenfall nochmal etwas über Schleifen durchlesen, normalerweise benutzt man in Python Schleifen eher um Objekte wie Listen und sowas zu iterieren... vergleichbar mit der For-Each Schleife in C++.

Verfasst: Donnerstag 6. September 2007, 04:53
von snatch
BlackVivi hat geschrieben:

Code: Alles auswählen

for i in xrange(20,40):
    print i,
Du solltest dir aber auf jedenfall nochmal etwas über Schleifen durchlesen, normalerweise benutzt man in Python Schleifen eher um Objekte wie Listen und sowas zu iterieren... vergleichbar mit der For-Each Schleife in C++.
Du hast recht, ich bin noch nicht sehr lange mit Python am programmieren. Aber xrange habe ich trotzdem schon mal gesehen. Zu dumm das mir das nicht eingefallen ist. Aber danke für den Tipp.

Wegen der Nutzung der Schleife, sie wird zur iteration einer Liste genutzt. Die Liste wird aber aus einer CSV Datei erstellt und der Startpunkt in der Liste kann variieren.

Verfasst: Donnerstag 6. September 2007, 09:46
von BlackJack
``for``-Schleifen in Python iterieren immer über Objekte, dass heisst nach dem ``in`` muss ein Objekt stehen, das diese Objekte erzeugt. Das indirekte iterieren über Listen via Indexzugriff kann man in Python in dem meisten Fällen vermeiden und bekommt damit etwas klareren Quelltext, weil man statt eines Indexzugriffs einen Namen hat, der (hoffentlich) etwas Aussagekraft hat.

Soweit Du das Problem beschrieben hast, sollte zum Beispiel "slicing" eine bessere Lösung darstellen als ein Index.

Code: Alles auswählen

for i in xrange(start, end):
    print csv_data[i]

# =>

for row in csv_data[start:end]:
    print row

Verfasst: Donnerstag 6. September 2007, 19:11
von Joghurt
snatch hat geschrieben:Aber xrange habe ich trotzdem schon mal gesehen.
BTW: Der Startparameter ist keine Besonderheit von xrange.

Du kannst auch range nehmen. Der einzige Unterschied zwischen beiden ist, dass range eine Liste mit den Werten erzeugt und xrange einen Iterator. Range braucht also ggf. viel Speicher, weil es erst eine Liste mit x Elementen anlegen muss.

(Edit: fixed typo)

Verfasst: Donnerstag 6. September 2007, 19:51
von EnTeQuAk
Joghurt hat geschrieben:Du kannst auch range nehmen. Der einzige Unterschied zwischen beiden ist, dass range ein Array mit den Werten erzeugt und xrange einen Iterator. Range braucht also ggf. viel Speicher, weil es erst eine Liste mit x Elementen anlegen muss.
`range` erzeugt eine Liste, kein Array.
Der Unterschied ist aber afaik nicht so extrem groß... zumindest nicht bei Listen mit 20 Elementen (eigene Erfahrung).


MfG EnTeQuAk

Verfasst: Donnerstag 6. September 2007, 19:53
von Joghurt
Oops, da hab ich mich verchrieben. Hab das Posting entsprechend gefixt