list.append()
est une opération in-place, ce qui signifie qu'elle modifie l'état de l'élément list
au lieu de renvoyer un nouveau list
objet.
Toutes les fonctions de Python renvoient None
à moins qu'ils ne renvoient explicitement autre chose. La méthode a.append()
modifie a
lui-même, ce qui signifie qu'il n'y a rien à renvoyer.
Une autre façon de voir ce comportement est de constater la différence entre sorted(some_list)
y some_list.sort()
.
Si vous ne voulez pas ajouter "x"
à a
vous devrez alors utiliser le deuxième extrait, ou vous pouvez simplement concaténer :
>>> a = [1, 2, 3, 4]
>>> b = a[1:] + ["x"]
>>> b
[2, 3, 4, 'x']
Pour plus de clarté :
>>> a = [1, 2, 3, 4]
>>> b = a[1:].append("x")
>>> a
[1, 2, 3, 4]
>>> a[1:]
[2, 3, 4]
>>> type(b)
<class 'NoneType'>
Notez que b
es None
, puisque le list.append()
la méthode renvoie None
. Notez également que a
n'a pas été modifié. C'est parce que vous avez ajouté à une tranche de a
mais sans sauvegarder cette tranche où que ce soit. Remarquez ce qui se passe si vous faites a.append("x")
:
>>> b = a.append("x")
>>> a
[1, 2, 3, 4, 'x']
>>> type(b)
<class 'NoneType'>
b
est toujours None
mais maintenant a
a été modifié.