list.extend() und list-slices

Code-Stücke können hier veröffentlicht werden.
Antworten
Caskuda
User
Beiträge: 26
Registriert: Sonntag 15. März 2020, 22:09

Kann mir jemand helfen, weshalb ich unterstehend bei der Anwendung von extend auf einen List-Slice none erhalte?
Ich vermute, dass der List-slice ohne Bindung an eine neue Variable noch keine vollwertige Liste ist.
list.extend() hängt ans Ende der Liste das nächste Iterable an, wobei das Ende und Slices vermutlich nicht klar definiert sind.

Code: Alles auswählen

l = [0,1,2,3,4]

m1 = l[0:1].extend(l[2:3])
print(m1)
# None
print(type(l[0:1])) 
# <class 'list'>


m2 = l[0:1]
m2.extend(l[2:3])
print(m2)
# [0,2]
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Du phantasierst hier viel herum. Dabei ist die Antwort ganz einfach: `extend` hat als Rückgabewert immer None. Das was Du da schreibst, kann man einfach nicht in eine Zeile packen.
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

@Caskuda: Und der Codeschnipsel ist ein gutes Beispiel dafür, dass "l" ein sehr schlechter Name für etwas ist. Immer erst zu überlegen ob das ein l, ein I oder doch eine 1 ist, macht es nicht wirklich einfacher, das nachzuvollziehen.
Caskuda
User
Beiträge: 26
Registriert: Sonntag 15. März 2020, 22:09

@Sirius: Danke, jetzt dämmert es mir.

Zusammenfassend:
Es liegt daran, dass extend "inplace" arbeitet. Deshalb der Rückgabewert None und
deshalb schlägt die Zuordnung fehl.
Antworten