Comment faire pour ajouter à la fin de la liste vide?
J'ai une liste:
list1=[]
la longueur de la liste est indéterminé, donc je suis en train d'ajouter des objets à la fin de list1 comme tel:
for i in range(0, n):
list1=list1.append([i])
Mais ma sortie continue cette erreur: AttributeError: 'NoneType' object n'a pas d'attribut 'append'
Est-ce parce que list1 commence par une liste vide? Comment puis-je corriger cette erreur?
- Pas de -1 s'il vous plaît. Le fait que append() retourne Aucun ne peut tromper beginers. La question est authentique.
Vous devez vous connecter pour publier un commentaire.
append
fait changements la liste. Aussi, il faut une élément, et non une liste. Par conséquent, tous vous avez besoin est(Au passage, notez que vous pouvez utiliser
range(n)
, dans ce cas.)Je suppose que votre utilisation réelle est plus compliqué, mais vous pouvez être en mesure d'utiliser une liste la compréhension, ce qui est plus pythonic pour cela:
Ou, dans ce cas, en Python 2.x
range(n)
réalise en fait la liste de ce que vous voulez déjà, bien que dans Python 3.x, vous devezlist(range(n))
.append
ajoute à la limite extérieure de la liste, mais vous pouvez ajouter à une liste imbriquée par l'indexation:a[-1].append(3)
ajoute3
à la dernière sous-liste dea
.Vous n'avez pas besoin de l'opérateur d'affectation. ajouter retourne Aucun.
Mikola a le droit de réponse, mais un peu plus d'explications. Il sera exécuté la première fois, mais parce que append renvoie
None
, après la première itération de la boucle for, votre mission sera la cause delist1
à l'égalité desNone
et, par conséquent, l'erreur est levée sur la deuxième itération.append
retourne Aucun, lors de la deuxième itération, vous appelez la méthodeappend
de NoneType. Il suffit de supprimer l'affectation:Personnellement, je préfère le
+
opérateur deappend
:Mais c'est la création d'une nouvelle liste à chaque fois, donc peut-être pas le meilleur, si la performance est critique.
Comme Mikola dit,
append()
renvoie un void, de sorte que chaque itération de la configuration de list1 à un nonetype car ajouter, c'est de revenir un nonetype. Sur la prochaine itération, list1, est nulle, de sorte que vous essayez d'appeler la méthode append d'une valeur null. Les valeurs null ne pas disposer de méthodes, d'où ton erreur.Notez que vous pouvez également utiliser les insérer dans le but de mettre le nombre dans la position désirée dans la liste:
Et à noter également qu'en python, vous pouvez toujours obtenir une liste de longueur à l'aide de la méthode len()
utilisation my_list.append(...)
et ne pas l'utiliser et d'autres de la liste pour ajouter que la liste sont mutables.
my_list
variable).