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
FOR-Startwert setzen
Code: Alles auswählen
for i in xrange(20,40):
print i,
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.BlackVivi hat geschrieben: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++.Code: Alles auswählen
for i in xrange(20,40): print i,
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.
``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.
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
BTW: Der Startparameter ist keine Besonderheit von xrange.snatch hat geschrieben:Aber xrange habe ich trotzdem schon mal gesehen.
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)
Zuletzt geändert von Joghurt am Donnerstag 6. September 2007, 19:53, insgesamt 1-mal geändert.
`range` erzeugt eine Liste, kein Array.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.
Der Unterschied ist aber afaik nicht so extrem groß... zumindest nicht bei Listen mit 20 Elementen (eigene Erfahrung).
MfG EnTeQuAk