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 ^^
[Frage?!?] Inhalt einer Variabele rückwärts speichern
- 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:
Was du umdrehen willst, ist uebrigens ein String und gehoert in Anfuehrungszeichen.
Code: Alles auswählen
>>> test1 = "hallo"
>>> test2 = test1[::-1]
>>> print test2
ollah
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
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
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
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
- 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
Hast du mal ausprobiert, was du da misst? Wenn ja, wozu willst du wissen, wie schnell das ist?cofi hat geschrieben:Code: Alles auswählen
In [7]: t = timeit.Timer('str(reversed("bla"))')
- 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.
Warum? Um snafus Werte zu komplettieren und ich gerade Lust dazu hatte zu sehen wie sich die üblichen String-Erzeuger verhalten.
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.
-
- 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?
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
Ich habe meine Lösung auch nur gepostet, weil ich an Slicing nicht gedacht habe.snafu hat geschrieben:Slicing ist offenbar eine ganze Ecke schneller als `reversed()` + `join()`