[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

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

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:

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

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

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

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

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

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

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

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

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

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.
Antworten