Verständnis String Umkehr über Aufschneiden
Frage
Ich war auf der Suche nach einer Möglichkeit, einen String zurück, und nach kurzer Suche auf Google zu drucken, fand ich diese Methode:
Angenommen a
ist ein String-Variable. Dadurch wird die a
String zurück nach hinten:
a[::-1]
Kann mir jemand erklären, wie das funktioniert?
Lösung
- Sie können eine oder mehrere der Elemente weglassen und es tut „das Richtige“
- Negative Zahlen für Beginn, Ende und Schritt Bedeutung haben
beginnen und enden, wenn Sie eine negative Zahl geben, bedeutet dies, vom Ende der Sequenz zu zählen. Zum Beispiel, wenn ich eine Liste:
l = [1,2,3]
Dann l[-1]
3, l[-2]
2, und l[-3]
ist 1.
Für das step
Argument, eine negative Zahl bedeutet, zu arbeiten zurück durch die Folge. So finden Sie eine Liste ::
l = [1,2,3,4,5,6,7,8,9,10]
Sie könnten l[::-1]
schreiben, die im Grunde bedeutet, eine Schrittgröße von zu verwenden, -1, während Sie durch die Liste zu lesen. Python wird „das Richtige tun“, wenn in dem Start Abfüll- und stoppt so iteriert es durch die Liste nach hinten und gibt Sie [10,9,8,7,6,5,4,3,2,1]
.
Ich habe die Beispiele mit Listen gegeben, aber Strings sind nur eine andere Reihenfolge und auf die gleiche Weise arbeiten. So bedeutet a[::-1]
einen String zu erstellen, indem Sie die Zeichen Verbinden Sie erhalten, indem Sie rückwärts durch die Zeichenfolge zu Fuß.
Andere Tipps
Die „-1“ repräsentiert den Teil „Schritt“ Teil des Slicing-in diesem Fall ist es das Zeichenfolge 1 Zeichen zu einer Zeit durchläuft, aber nach hinten (ein negativer Schritt Mittel von dem Ende der Zeichenfolge beginnen). Wenn Sie den Schritt angeben 2 sein, zum Beispiel, würden Sie jedes andere Zeichen der Zeichenfolge erhalten, mit dem ersten Start. Wenn Sie einen Schritt von -2 angeben, dann würden Sie jedes anderes Zeichen der Zeichenfolge erhalten, mit dem letzten Zeichen beginnen und rückwärts arbeiten.
Also, kurz gesagt, wenn a = '12345'
:
-
a[::2]
wird135
-
a[::-1]
wird54321
-
a[::-2]
wird531
Ich denke, die folgenden ein bisschen mehr Sinn für Druck Strings rückwärts macht, aber vielleicht ist das nur mir:
for char in reversed( myString ):
print( char, end = "" )
Es ist der erweiterte Slice-Notation :
sequence[start:end:step]
In diesem Fall Schritt -1 bedeutet, rückwärts, und das Weglassen der Anfang und das Ende bedeutet, dass Sie die gesamte Zeichenfolge wollen.
Es Scheibe Notation in Python genannt und Sie können ein bisschen mehr lesen, wie es hier funktioniert:
Es ist erweitern Slicing mit - ein String eine Sequenz in Python ist, und teilt einige Methoden mit anderen Sequenzen (nämlich Listen und Tupeln). Es gibt drei Teile zu schneiden - Start, Stopp und Schritt. Alle von ihnen Standardwerte haben - Start automatisch auf 0 standardmäßig len (Sequenz) zu stoppen, und Schritt standardmäßig auf 1. Bis spätestens [:: - 1] spezifiziert Sie eine „alle Elemente der Reihe sind zu sagen, von Anfang an beginnen bis zum Ende nach hinten einer nach dem anderen gehen.
Diese Funktion in Python 2.3.5 eingeführt wurde, und Sie können mehr in der Was Neue docs ist.
[:: - 1] gibt ein Stück der Zeichenfolge ein. Die vollständige Syntax lautet a[begin:end:step]
was ein [beginnen], einen [begin + Schritt], ... a [end-1]. Wenn der Schritt negativ ist, Sie am Ende beginnen und beginnen zu bewegen.
Schließlich beginnt standardmäßig auf den Beginn der Sequenz, Ende zu Ende, und Schritt auf -1.
Ich würde es tun, wie folgt:
variable = "string"
message = ""
for b in variable:
message = b+message
print (message)
und er druckt: gnirts
ein String ist im Wesentlichen eine Folge von Zeichen und so der Schneidvorgang funktioniert auf sich. Was Sie tun, ist in der Tat:
-> eine Scheibe von 'a' von Anfang erhält rückwärts in Schritten von 1 zu beenden
.Es ist grundlegende Schritt Notation, sollten Sie die Funktionalität von:
a [2: 4: 2]
Was ist der Index passiert ist 2 zwischen Position in Scheiben geschnitten und 4, was die dritten Variable tut, ist es stellt das Schrittweite von dem ersten Wert zu starten. In diesem Fall wäre es eine Rückkehr [2], da a [4] eine obere Grenze ist nur zwei Werte sind Rückgabe- und kein zweiter Schritt erfolgt. Die (-) minus Bediener einfach kehrt die Schrittausgabe
.Betrachten Sie die Liste unter
l=[12,23,345,456,67,7,945,467]
Ein weiterer Trick, um eine Liste für die Umkehrung kann sein:
l[len(l):-len(l)-1:-1] [467, 945, 7, 67, 456, 345, 23, 12]
l[:-len(l)-1:-1] [467, 945, 7, 67, 456, 345, 23, 12]
l[len(l)::-1] [467, 945, 7, 67, 456, 345, 23, 12]
können wir append verwenden und Pop, es zu tun
def rev(s):
i = list(s)
o = list()
while len(i) > 0:
o.append(t.pop())
return ''.join(o)
Ohne Verwendung umgekehrt oder [:: - 1], hier ist eine einfache Version auf Rekursion basierte Ich würde sein die meisten lesbar:
def reverse(s):
if len(s)==2:
return s[-1] + s[0]
if len(s)==1:
return s[0]
return s[-1] + reverse(s[1:len(s)-1]) + s[0]
erweiterte Slice-Syntax
word = input ("Type a word which you want to reverse: ")
def reverse(word):
word = word[::-1]
return word
print (reverse(word))
Sie können umgekehrt () Funktion verwenden. Zum Beispiel
x = "abcd"
for i in reversed(x):
print(i, end="")
print("\n")
L = [1,2,3]
for i in reversed(L):
print(i, end="")
druckt dcba
und 321
Die ersten beiden Grenzen Default auf 0 und die Länge der Sequenz, wie zuvor, und ein Schritt von -1 zeigt an, dass die Scheibe von rechts gehen sollte statt dem üblichen links nach rechts nach links. Die Wirkung ist also die Reihenfolge umgekehrt werden.
name="ravi"
print(name[::-1]) #ivar