Seite 1 von 1

list.extend() und list-slices

Verfasst: Montag 29. Juni 2020, 12:26
von Caskuda
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]

Re: list.extend() und list-slices

Verfasst: Montag 29. Juni 2020, 12:30
von Sirius3
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.

Re: list.extend() und list-slices

Verfasst: Montag 29. Juni 2020, 12:32
von sparrow
@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.

Re: list.extend() und list-slices

Verfasst: Montag 29. Juni 2020, 13:14
von Caskuda
@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.