Unendlicher xrange

09/09/2009 - 14:56 von Ole Streicher | Report spam
Hallo,

ich habe mal wieder ein vermutlich kleines Problem:

Ich möchte gerne die Zeilennummer einer Zeile haben, beispielsweise für
eine nummerierte Ausgabe. Also folgendes:

with open('article.txt') as file:
for line, i in zip(file, xrange()):
print i, ':', line

Leider klappt das nicht, weil xrange zumindest gerne den Endwert möchte,
den ich aber doch erst am Ende der Bearbeitung kenne. Ein

with open('article.txt') as file:
i = 1
for line in file:
print i, ':', line
i += 1

sieht dagegen nicht sehr elegant aus -- das zu ersetzen ist doch xrange
gerade angetreten? Und bei xrange einfach eine riesige Zahl einzusetzen
ist auch nicht gerade besser.

Wie ist hier die optimale Lösung?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Sascha Hüdepohl
09/09/2009 - 15:04 | Warnen spam
Hallo!

Ole Streicher schrieb:


with open('article.txt') as file:
for line, i in zip(file, xrange()):
print i, ':', line

Leider klappt das nicht, weil xrange zumindest gerne den Endwert
möchte, den ich aber doch erst am Ende der Bearbeitung kenne. Ein



Ich bin noch recht neu in python. Deshalb ist meine Antwort wohmöglich
nicht die perfekte Lösung.

Wenn Du einen eigenen Generator schreibst, der kein Ende kennt, dann
gehts:

def g():
i = 0
while True:
yield i
i = i + 1

und eben an stelle von xrange g verwenden.

HTH & HAND
sascha

Ähnliche fragen