
Wie kann man eigentlich möglichst simpel und elegant über Zeichen iterieren? Zum Beispiel von A-Z? Für Zahlen gibt's "range"... Eventuell "for char in map(chr, range(65, 91))"? _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On Mon, 2004-04-26 19:34:52 +0200, Thorsten Kampe wrote:
Viel einfacher :-)
Wenn du an bestimmte Zeichenmengen denkst:
Der Inhalt von string.letters ist nicht immer derselbe, sondern hängt vom eingestellten Locale ab. Viele Grüße Stefan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

* Stefan Schwarzer (2004-04-26 20:20 +0100)
Ja, wie kann ich aber zum Beispiel über c-w iterieren ohne explizit 'cdefghijklmnopqrstuvw' hinzuschreiben? Es geht mir schlicht um das Erzeugen des Strings... Thorsten _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On 26 Apr 2004, Thorsten Kampe <- thorsten@thorstenkampe.de wrote:
So jetzt mein zweiter Versuch zu antworten (die erste E-Mail fiel bekam ich wegen einer hirntoten und sinnfreien SPF Prüfung zurück; I am not amused). Nutze doch eine Generatorfunktion (die Alternativen wurden schon genannt): def chars (min='A', max='z', step=1): if min < max: compare=lambda c1, c2: c1 <= c2 inc=lambda c: chr(ord(c) + step) else: compare=lambda c1, c2: c1 >= c2 inc=lambda c: chr(ord(c) - step) while compare(min, max): yield min min = inc(min) Nun kannst du, um von c bis w zu iterieren schreiben:
Für die umgekehrte Richtung:
Die Schrittweite kannst du auch wählen. Es erscheint etwas overkill, aber wenn man es mehrmals nutzen muß, hat die klare Schreibweise schon etwas für sich IMO. Wenn man es nur einmal braucht, ist die map() Variante oder die entsprechende list comprehension wohl das Mittel der Wahl. ps: ist die Verwendung von SPF dauerhaft für diese Liste? Es erscheint mir momentan etwas ähh sch^h^huboptimal. Karl -- `Beware the Jabberwock, my son! The jaws that bite, the claws that catch! Beware the Jubjub bird, and shun The frumious Bandersnatch!' "Lewis Carroll" "Jabberwocky" _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On Mon, Apr 26, 2004 at 09:27:21PM +0200, Thorsten Kampe wrote:
* Stefan Schwarzer (2004-04-26 20:20 +0100)
[cut]
Hallo Thorsten, Den String kannst du z.B. so erzeugen: (ohne lambda, Iteratoren und Listcomprehension): mystring=[] for i in range(ord("c"), ord("z")+1): mystring.append(chr(i)) mystring=''.join(mystring) print mystring Gruß, Thomas -- Thomas Guettler <guettli@thomas-guettler.de> http://www.thomas-guettler.de _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On Mon, 2004-04-26 19:34:52 +0200, Thorsten Kampe wrote:
Viel einfacher :-)
Wenn du an bestimmte Zeichenmengen denkst:
Der Inhalt von string.letters ist nicht immer derselbe, sondern hängt vom eingestellten Locale ab. Viele Grüße Stefan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

* Stefan Schwarzer (2004-04-26 20:20 +0100)
Ja, wie kann ich aber zum Beispiel über c-w iterieren ohne explizit 'cdefghijklmnopqrstuvw' hinzuschreiben? Es geht mir schlicht um das Erzeugen des Strings... Thorsten _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On 26 Apr 2004, Thorsten Kampe <- thorsten@thorstenkampe.de wrote:
So jetzt mein zweiter Versuch zu antworten (die erste E-Mail fiel bekam ich wegen einer hirntoten und sinnfreien SPF Prüfung zurück; I am not amused). Nutze doch eine Generatorfunktion (die Alternativen wurden schon genannt): def chars (min='A', max='z', step=1): if min < max: compare=lambda c1, c2: c1 <= c2 inc=lambda c: chr(ord(c) + step) else: compare=lambda c1, c2: c1 >= c2 inc=lambda c: chr(ord(c) - step) while compare(min, max): yield min min = inc(min) Nun kannst du, um von c bis w zu iterieren schreiben:
Für die umgekehrte Richtung:
Die Schrittweite kannst du auch wählen. Es erscheint etwas overkill, aber wenn man es mehrmals nutzen muß, hat die klare Schreibweise schon etwas für sich IMO. Wenn man es nur einmal braucht, ist die map() Variante oder die entsprechende list comprehension wohl das Mittel der Wahl. ps: ist die Verwendung von SPF dauerhaft für diese Liste? Es erscheint mir momentan etwas ähh sch^h^huboptimal. Karl -- `Beware the Jabberwock, my son! The jaws that bite, the claws that catch! Beware the Jubjub bird, and shun The frumious Bandersnatch!' "Lewis Carroll" "Jabberwocky" _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On Mon, Apr 26, 2004 at 09:27:21PM +0200, Thorsten Kampe wrote:
* Stefan Schwarzer (2004-04-26 20:20 +0100)
[cut]
Hallo Thorsten, Den String kannst du z.B. so erzeugen: (ohne lambda, Iteratoren und Listcomprehension): mystring=[] for i in range(ord("c"), ord("z")+1): mystring.append(chr(i)) mystring=''.join(mystring) print mystring Gruß, Thomas -- Thomas Guettler <guettli@thomas-guettler.de> http://www.thomas-guettler.de _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (4)
-
sigurd@12move.de
-
Stefan Schwarzer
-
Thomas Guettler
-
Thorsten Kampe