[Frage?!?] Inhalt einer Variabele rückwärts speichern

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
TB-Python
User
Beiträge: 2
Registriert: Sonntag 3. Mai 2009, 17:20

Hallo Leute
Ich habe folgendes Problem....
ich habe z.b eine Variabele

test=hallo

der inhalt der variabele möchte ich rückwärts geschreiben in eine andere speichern, dass das Endergebnis dann so aussehen würde...

neu_test=ollah

Ich weiß schon das ich hier mit einer FOR-Schleife arbeiten muss aber ich habe zur zeit kein Plan wie ich diesen Sachverhalt umsetzten soll

Danke schon mal im voraus ^^
lunar

Code: Alles auswählen

neu_test = ''.join(reversed(test))
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dafuer braucht man noch keine Schleife, das kann Python schon so:

Code: Alles auswählen

>>> test1 = "hallo"
>>> test2 = test1[::-1]
>>> print test2
ollah
Was du umdrehen willst, ist uebrigens ein String und gehoert in Anfuehrungszeichen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
TB-Python
User
Beiträge: 2
Registriert: Sonntag 3. Mai 2009, 17:20

jo danke ^^ funktioniert

ja ich weiß hab ich gerade nur vergessen rein zumachen
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mit einer for-Schleife geht es natürlich auch. Unter der Annahme das in der Schule/im Unterricht noch keine Generatoren oder Slices dran waren, könnte man auch einfach von hinten beginnend auf den String zugreifen. Man muss nur wissen, dass die einzelnen Zeichen mit einem Index von 0 bis Länge-1 adressiert werden und dass negative Index-Werte zur Länge addiert von hinten zählen. Ist 0 das erste Element und 1 das zweite, so ist Länge-1 (oder eben nur -1) das letzte und -2 das vorletzte.

Mit "range(Länge)" erzeugt man sich Zahlen zwischen 0 und Länge-1. Über so ein range-Objekt kann man dann mit einer for-Schleife iterieren.

Stefan
Benutzeravatar
snafu
User
Beiträge: 6737
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Slicing ist offenbar eine ganze Ecke schneller als `reversed()` + `join()`:

Code: Alles auswählen

In [15]: t = timeit.Timer('"bla"[::-1]')

In [16]: t.timeit()
Out[16]: 0.55775189399719238

In [17]: t = timeit.Timer('"".join(reversed("bla"))')

In [18]: t.timeit()
Out[18]: 5.1222031116485596
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Kann ich bestätigen. Mal ausführlicher:

Code: Alles auswählen

In [3]: t = timeit.Timer('"bla"[::-1]')

In [4]: t.timeit()
Out[4]: 0.23100900650024414

In [5]: t = timeit.Timer('"".join(reversed("bla"))')

In [6]: t.timeit()
Out[6]: 2.0036501884460449

In [7]: t = timeit.Timer('str(reversed("bla"))')

In [8]: t.timeit()
Out[8]: 1.6974201202392578

In [9]: t = timeit.Timer('unicode(reversed("bla"))')

In [10]: t.timeit()
Out[10]: 2.0045149326324463
bords0
User
Beiträge: 234
Registriert: Mittwoch 4. Juli 2007, 20:40

cofi hat geschrieben:

Code: Alles auswählen

In [7]: t = timeit.Timer('str(reversed("bla"))')
Hast du mal ausprobiert, was du da misst? Wenn ja, wozu willst du wissen, wie schnell das ist?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Was ich da messe? Wie schnell aus einem reversed-Iterator ein String-Objekt gebaut wird.
Warum? Um snafus Werte zu komplettieren und ich gerade Lust dazu hatte zu sehen wie sich die üblichen String-Erzeuger verhalten.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

cofi hat geschrieben:Was ich da messe? Wie schnell aus einem reversed-Iterator ein String-Objekt gebaut wird.

Code: Alles auswählen

>>> str(reversed("test"))
'<reversed object at 0x7f71bba24650>'
Das Leben ist wie ein Tennisball.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Uii, na dass sollte recht effizient sein, O(1), constant time! :)

Wer mag mir erklaeren was "[Frage ?!?]" im Topic fuer einen Sinn hat? Will man markieren dass es eine Frage ist? Das waere ja nicht weiter erwaehnenswert. Ist der OP sich nicht sicher ob es eine Frage ist?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

snafu hat geschrieben:Slicing ist offenbar eine ganze Ecke schneller als `reversed()` + `join()`
Ich habe meine Lösung auch nur gepostet, weil ich an Slicing nicht gedacht habe.
Antworten