Seite 1 von 1

Was mache ich mit der zip-Funktion falsch?

Verfasst: Montag 14. Januar 2008, 11:07
von htw7448
folgender Code:

Code: Alles auswählen

testdict{}
gtype = ['1-Modell', '2-Modell', '3-Modell']
grange = [(1, 130), (201, 330), (501, 630)]
stype = '1-Modell'

for (key, (start, stop)) in zip(gtype, grange):
	testdict[key] = ["%s30%03i_1" %(stype[0], value for value in xrange(start, stop + 1))]
führt zu einer allemeinen Fehlermeldung. Sobald ich mehrere Strings über den Formatierungsoperator einfügen möchte steigt Python aus. Liegt das evtl. an der xrange-Funktion?

Bin derzeit etwas ratlos...

Verfasst: Montag 14. Januar 2008, 11:21
von Mad-Marty
Und wie ist denn die allgemeine Fehlermeldung?

Verfasst: Montag 14. Januar 2008, 11:25
von htw7448
python ist an der Stelle als Scriptsprache eingebettet. Er spuckt lediglich invalid syntax aus. Wenn man einen Formatierungsoperator weglässt geh es, aber ich brauch eben 2.

Code: Alles auswählen

testdict{}
gtype = ['1-Modell', '2-Modell', '3-Modell']
grange = [(1, 130), (201, 330), (501, 630)]
stype = '1-Modell'

for (key, (start, stop)) in zip(gtype, grange):
    testdict[key] = ["30%03i_1" %value for value in xrange(start, stop + 1)]

Verfasst: Montag 14. Januar 2008, 11:57
von Zap
Wer ist denn "Er"?

Also hiermit sind die Syntaxfehler schonmal besetigt:

Code: Alles auswählen

testdict = {} # Zuweisung fehlte 
gtype = ['1-Modell', '2-Modell', '3-Modell']
grange = [(1, 130), (201, 330), (501, 630)]
stype = '1-Modell'

for (key, (start, stop)) in zip(gtype, grange):
    # Tupelbuildung und füllen des Strings hier muss innerhalb der List-Comprehension passieren
    testdict[key] = ["%s30%03i_1" % (stype[0], value) for value in xrange(start, stop + 1)]
Ergebnis:

Code: Alles auswählen

In [33]: testdict
Out[33]:
{'1-Modell': ['130001_1',
              '130002_1',
              '130003_1',
              '130004_1',
              '130005_1',
              '130006_1',
              '130007_1',
              '130008_1',
...
Es ist übrigens nicht schlecht wenn man seinen Code einfach in einem Script oder in der Interactiven Shell testet.

Gruß Zap

PS: Ich hab den Sinn und Zweck des Skripts nicht geprüft.

Verfasst: Montag 14. Januar 2008, 12:44
von htw7448
das script soll genauso laufen zap. danke.