2 Stimmen

Wie entfernt man das hintere Ende einer Liste in Python?

Für einen Teil der Klasse habe ich also eine gegebene Eingabe von einer txt Datei. Im Grunde genommen kann ich eine Eingabezeichenfolge erhalten, die etwa so aussieht

listy = ["Miko's Lounge", '41.2', '56.7', '99th Ave, NY', '3', '4', '5', '2']

Was ich mit dieser Eingabe tun muss, ist, die Adresse zu entfernen und die Zahlen am Ende der Liste in eine eigene Liste innerhalb der Liste zu stellen, etwa so.

["Miko's Lounge", '41.2', '56.7', ['3', '4', '5', '2'] ]

Ich weiß, dass ich die Adresse entfernen kann, indem ich listy.pop(3) . Aber die Zahlen am Ende der Zeichenkette können variieren! Sie stehen für Sternebewertungen, und manche Orte haben mehr Sterne als andere. Gibt es eine Möglichkeit, alle Indizes ab einem bestimmten Punkt in der Liste zu entfernen und weiter, wie die Funktion slice() irgendwie?

Ich habe versucht, eine for-Schleife zu verwenden, die die range Funktion, aber sie scheint nicht richtig zu funktionieren (oder wie ich es erwarte).

listy = ['1', '2', '3', '4', '5']

for i in range( 2 , len(listy)-1 ):
    listy.pop(i)

print listy

Was ich als Ausgabe erhalte:

['1', '2', '4']

Wenn ich versuche, etwas zu bekommen, das eher in die Richtung geht:

['1', '2']

Warum ist die zufällige '4' da drin? Ich verstehe das mit der Reichweite nicht! Ich vermisse Java mit den einfachen for-Schleifen -_-

12voto

Gareth Latty Punkte 81833

Sie können verwenden Listenaufteilung um dies einfach zu tun:

>>> listy[:3]+[listy[4:]]
["Miko's Lounge", '41.2', '56.7', ['3', '4', '5', '2']]

0voto

Michael Punkte 6665

Versuchen Sie das:

listy = ["Miko's Lounge", '41.2', '56.7', '99th Ave, NY', '3', '4', '5', '2']
l = listy[:3]
l.append(listy[4:])
l

Gibt Ihnen:

["Miko's Lounge", '41.2', '56.7', ['3', '4', '5', '2']]

0voto

Ben West Punkte 661

Wahrscheinlich sollten Sie bereits die Unterlagen für List gelesen haben: http://docs.python.org/tutorial/datastructures.html

Allerdings sehe ich die Syntax, nach der Sie suchen, auch nicht.

Ich denke, was Sie wollen, ist die zweiteilige Indexsyntax, die die gängige Containermethode 'slice' ersetzt

python adressiert eine Unterliste mit

myListInstance[start:end] //<-- note the colon

Weitere Informationen:

http://docs.python.org/tutorial/datastructures.html#the-del-statement

-1voto

Erstens: Ihre Liste listy hat fünf Elemente. Wenn Sie das Element mit dem Index 2 löschen, bleiben 4 übrig und len(listy) gibt 4 zurück, so dass listy[3] gelöscht wird. Folglich haben Sie [1,2,4] . Ich hoffe, Sie haben verstanden, wie das Ergebnis zustande gekommen ist. Ändern Sie

for i in range(3):
    listy.pop(len(listy)-1)
print listy

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X