Wert mit remove löschen und ausgeben lassen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Beginner123
User
Beiträge: 12
Registriert: Donnerstag 18. Oktober 2018, 07:38

Hallo Zusammen und zwar hab ich die Frage, wie ich einen Wert mit remove aus einer gegebenen Liste löschen und einzeln ausgeben kann.
Mit dem Befehl pop funktioniert es bei mir, mit remove bekomme ich nur None raus.

Code: Alles auswählen

L = [1,2,3,4,5,6,8,9]

def test(L):
	x = L.remove(5)
	print(x)
	return L
test(L)
So bin ich vorgegangen, geht das überhaupt mit dem Befehl remove? Oder kann ich es nur mit einer extra Zuweisung machen bevor ich den Wert lösche, also z.B. so:

Code: Alles auswählen

L = [1,2,3,4,5,6,8,9]

def test(L):
	x = L[4] 
	L.remove(5)
	print(x)
	return L
test(L)
Danke für eure Hilfe!
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

pop() löscht das Element einer Liste anhand des Indexes. Wenn du bei deiner Liste L = [1,2,3,4,5,6,8,9] nun L.pop(4) eingibst, wird die 5 gelöscht.

remove() entfernt zwar das gewünschte Element, hat aber keinen Rückgabewert (bzw. None), wenn du x also mit L.remove(5) deklarierst, wird x None zugewiesen.
When we say computer, we mean the electronic computer.
Beginner123
User
Beiträge: 12
Registriert: Donnerstag 18. Oktober 2018, 07:38

Okay, also kann ich mit remove kein Element aus einer gegebenen Liste erst entfernen und das entfernte Objekt darauf ausgeben lassen?
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Na ja, dein zu löschendes Objekt wird ja vorher irgendwo feststehen müssen, günstigerweise in einer Variablen die du der Funktion übergibst oder gar als lokale Variable innerhalb der Funktion. Bei pop() wird vorallem per default immer das letzte Element im Index gewählt, wenn deine Liste mehrere gleiche Elemente enthält. Da müsstest du zusätzlich den Index angeben.

remove() wird den Wert den du der Methode übergibst knallhart löschen auf das erste Element auf das dieser Wert zutrifft.
When we say computer, we mean the electronic computer.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Beginner123: bei `remove` kennst Du schon das Element, das aus der Liste entfernt werden soll, dann das ist das, das Du als Argument übergibst. Bei ›L.remove(5)‹ ist die 5 schon bekannt, was soll es helfen, wenn die 5 auch noch als Rückgabewert zurückgegeben wird?
Dein Beispiel sollte also besser so aussehen:

Code: Alles auswählen

def test(L):
    """removes 5 from the list L"""
    x = 5
    L.remove(x)
    print(x)
Funktionen, die ein Objekt verändern, das sie als Argument bekommen, sollten das in ihrer Dokumentation deutlich machen. Wenn möglich (sinnvoll), solche Funktionen vermeiden, besser eine neue, veränderte Liste zurückgeben. Erwartung ist, wenn eine Funktion eine Liste als Rückgabewert hat, dann wurde die übergebene Liste NICHT verändert. Wenn die Funktion keinen Rückgabewert hat, dann ja, denn wo soll sonst das Ergebnis stehen. Vergleiche list.sort und sorted.

Allgemein: eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht mit Tabs; jeder Editor läßt sich so einstellen, dass beim Drücken der Tab-Taste 4 Leerzeichen ausgegeben werden. Variablennamen werden klein geschrieben und sind aussagekräftig. Einbuchstabige Variablennamen nur in sehr engen Kontexten benutzen (List-Comprehension, ...)
Beginner123
User
Beiträge: 12
Registriert: Donnerstag 18. Oktober 2018, 07:38

Okay, danke für die Erklärung, das war gut zu verstehen
Antworten