Wie Entferne ich einen Bereich (Unterabschnitt) von einer Liste in Python?
Habe ich eine einfache, immer-aufeinander-geordnete Liste wie diese:
all = [ 1, 2, 3, 4, 5, 6 ] # same as range( 1, 7 )
Ich habe auch current = 4
. Am Ende will ich die all
Liste zu schauen, wie diese
altered = [ 1, 2, 5, 6 ]
Was also passierte, war es entfernt die current
Anzahl und die ein, bevor es 3
.
current
auch 1
und 0
, so möchte ich sicherstellen, dass es keine Fehler für diese beiden Werte.
Für die Ausnahme current = 0
die veränderte Liste ist wie folgt
altered = [ 1, 2, 3, 4, 5 ]
Was bedeutet, dass current = 0
entfernt einfach die Letzte Zahl.
Ich fühle mich wie du kann wohl etwas code, der Phantasie mit Generatoren, aber ich zu saugen, Sie zu schreiben.
Vielen Dank im Voraus!
Bonus-Punkte, dies zu tun in einer Zeile. Wenn die current = 0
ist zu viel Mühe macht, dann könnte es auch sein current = -1
oder current = 7
.
EDIT: vergewissern Sie sich, dass für current = 1
, die
altered = [ 2, 3, 4, 5, 6 ]
- Wenn aktuell==4 ist die 4 aus der Liste entfernt, weil Sie den Wert 4 oder, weil es ist, in der vierten position (beim zählen von eins)? Ebenso ist die 3 entfernt werden, da es die kleinste Zahl, die kleiner als 4 ist, oder weil es auf dem index vor dem Element entfernt?
- Die Liste ist immer ein
range()
es ist also egal, ob man Sie als eine position oder Wert. - Rufen Sie nicht Ihre Listen
all
da gibt es eine eingebaute Funktionall()
und entfernt den Zugriff auf Sie, sobald Sie den Namen verwenden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
oder
current = 1
current = 7
als gut. Ist es möglich es so zu machen, dass es löscht die Letzte Zahl fürcurrent = 0
? Dann ist es perfekt!if current = 0:
all = all[:-1]
. Es machte den code einfacher zu Lesen.Würde das funktionieren?
current = 0
entfernen müssen, um den endgültigen Wert6
als hobbes3 erwähntcurrent=0
🙁[item for item in all if item != current and item != current-1 or current == 0 and item != len(all)]