2016-07-22 6 views
1

Hier ist mein Code:Wie würde man ein Zeichen aus einer einzelnen Elementliste entfernen?

def reverse(text): 
    intermediate = [] 
    opposite = [] 
    intermediate.append(text) 
    size = len(intermediate) 
    while len(intermediate) > 0: 
     opposite.append(intermediate[-1]) 
     intermediate[:-1] ` <--- 
    return opposite 

Der Pfeil markiert Linie ist, wo ich versuche, das letzte Zeichen in der Zwischen-Liste zu entfernen. Etwas scheint nicht zu funktionieren ...

Antwort

0

In Python sind Strings unveränderlich. Sie werden die getrimmten Zeichenfolge zurück auf die ursprüngliche Zeichenfolge einstellen:

intermediate = intermediate[:-1] 

Beachten Sie auch, dass, wenn Sie opposite zurückkehren, wird es kein String sein, wird es eine Liste von Zeichen sein.

return ''.join(opposite) 

EDIT: Sie können es wie so in einen String konvertieren

Ok so auf an Ihrem Code suchen, haben Sie mehr als einen Syntaxfehler:

def reverse(text): 
    intermediate = [] 
    opposite = [] 
    intermediate.append(text) # <-- this line makes intermediate a list with one element: ['input_text'] 
          # you want intermediate = str(text) (cast it to make a copy) 
          # as it is, you will just pass this string from one list to another, and return 
    size = len(intermediate) # you don't need this 
    while len(intermediate) > 0: 
     opposite.append(intermediate[-1]) 
     intermediate[:-1]  # your string immutability problem 
    return opposite   # your list/string confusion 

Also alle zusammen wollen Sie etwas wie:

def reverse(text): 
    opposite = [] 
    intermediate = str(text) 
    while len(intermediate) > 0: 
     opposite.append(intermediate[-1]) 
     intermediate = intermediate[:-1] 
    return ''.join(opposite) 

EDIT 2: Auch, um diese Art von Verwirrung zu vermeiden, habe ich nur String oder nur Listen, in diesem Fall bleiben würde, überhaupt keine Notwendigkeit für Listen:

def reverse(text): 
    opposite = '' 
    intermediate = str(text) 
    while len(intermediate) > 0: 
     opposite += intermediate[-1] 
     intermediate = intermediate[:-1] 
    return opposite 
+0

Danke. Wenn ich intermediate = intermediate [: - 1] gesetzt habe, muss ich sonst noch etwas tun? Wenn ich den Code ausführe, (kehrt zurück) gibt es das Gegenteil des Eingabetextes nicht zurück. – user8669

+0

Nein, solange Sie nur den letzten Buchstaben von "intermediate" an "different" anhängen wollen, dann entfernen Sie ihn von 'intermediate', das ist alles was Sie brauchen. OTOH, wenn Sie nur eine Zeichenfolge umkehren möchten, können Sie 'reversed_string = forward_string [:: - 1]' http://stackoverflow.com/documentation/python/289/indexing-and-slicing#t=201607221640437443544 ausführen Sehen Sie hier, um mehr über das Schneiden zu erfahren. – Will

+0

Ich arbeite an einer Zuweisung, die keine umgekehrten oder [:: - 1] Funktionen erlaubt. Gibt es einen Grund, warum mein Code die Zeichenfolge nicht umkehrt? – user8669