FOR-Startwert setzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
snatch
User
Beiträge: 25
Registriert: Sonntag 20. August 2006, 01:49

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
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

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++.
snatch
User
Beiträge: 25
Registriert: Sonntag 20. August 2006, 01:49

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.
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
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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)
Zuletzt geändert von Joghurt am Donnerstag 6. September 2007, 19:53, insgesamt 1-mal geändert.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

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
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Oops, da hab ich mich verchrieben. Hab das Posting entsprechend gefixt
Antworten