2016-01-19 3 views
6

löschen habe ich die Saiten ‚80010‘, ‚80030‘, ‚80050‘ in einer Liste, wie inWie die allerletzte Zeichen von jeder Zeichenfolge in einer Liste von Strings

test = ['80010','80030','80050'] 

Wie kann ich löschen das allerletzte Zeichen (in diesem Fall die letzte Ziffer jedes Strings, die eine 0 ist), so dass ich mit einer anderen Liste enden kann, die nur die ersten vier Ziffern/Zeichen aus jedem String enthält? Also am Ende mit etwas wie

newtest = ['8001', '8003', '8005'] 

Ich bin sehr neu in Python, aber ich habe versucht, mit if-else-Anweisungen, Anhängen, Indizierung mit [: 1] usw., aber nichts scheint zu funktionieren, wenn ich am Ende Löschen aller anderen Nullen. Ich danke dir sehr!

Antwort

7
test = ["80010","80030","80050"] 
newtest = [x[:-1] for x in test] 

Neuer Test enthält das Ergebnis ["8001","8003","8005"].

[x[:-1] for x in test] erstellt eine neue Liste (mit Liste Verständnis) durch in test über jedes Element Looping und eine modifizierte Version in newtest setzen. Das x[:-1] bedeutet, alles in dem Zeichenfolgenwert X bis zu dem letzten Element aber nicht zu übernehmen.

+0

sehr schöne Erklärung für mich XD – Meinkraft

6

Sie sind nicht so weit weg. Die Verwendung der Slice-Notation [: -1] ist der richtige Ansatz. kombinieren Sie es einfach mit einer Liste Verständnis:

>>> test = ['80010','80030','80050'] 
>>> [x[:-1] for x in test] 
['8001', '8003', '8005'] 

somestring[:-1] Ihnen alles aus dem Zeichen an der Position gibt 0 (einschließlich) bis zum letzten Zeichen (exklusiv).

1

Nur um eine etwas andere Lösung als das Verständnis zu zeigen, vorausgesetzt, dass andere Antworten bereits erläutert Slicing, gehe ich nur bei der Methode durch.

Mit der Kartenfunktion.

test = ['80010','80030','80050'] 
print map(lambda x: x[:-1],test) 
# ['8001', '8003', '8005'] 

Weitere Informationen zu dieser Lösung finden Sie in der kurzen Erläuterung, die ich in einer ähnlichen Frage gemacht habe.

Convert a list into a sequence of string triples

+1

Die in Python funktioniert 2. Wenn Sie Python verwenden 3, gibt die Kartenfunktion einen Generator (ergibt 1 Punkt zu einem Zeitpunkt nach Wunsch), so dass Sie wickeln müssen es in einer Liste aufrufen, wenn Sie eine Liste (Liste (Karte (Lambda x: x [: - 1], Test)) wollen). Darüber hinaus wird der Ausdruck print in Python 3 zu einer Funktion, sodass Sie alles, was gedruckt werden soll, ebenfalls in runde Klammern setzen müssen. – Matthew

+0

Danke für die Zugabe. – Rockybilly

Verwandte Themen