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

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

Beitragvon TB-Python » Sonntag 3. Mai 2009, 17:26

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

Beitragvon lunar » Sonntag 3. Mai 2009, 17:36

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:

Beitragvon Rebecca » Sonntag 3. Mai 2009, 17:39

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

Beitragvon TB-Python » Sonntag 3. Mai 2009, 18:37

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

Beitragvon sma » Sonntag 3. Mai 2009, 18:40

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: 5383
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Beitragvon snafu » Montag 4. Mai 2009, 12:41

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
shcol (Repo | Doc | PyPi)
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Montag 4. Mai 2009, 13:13

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: 165
Registriert: Mittwoch 4. Juli 2007, 20:40

Beitragvon bords0 » Dienstag 5. Mai 2009, 13:16

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
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Dienstag 5. Mai 2009, 14:03

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: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Dienstag 5. Mai 2009, 14:12

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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 5. Mai 2009, 14:40

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 Modvoice
lunar

Beitragvon lunar » Dienstag 5. Mai 2009, 16:24

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.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Yahoo [Bot]