web-dev-qa-db-fra.com

Liste append () dans la boucle for

En Python, essayez de faire la fonction d’ajout la plus élémentaire à une liste avec une boucle: Vous ne savez pas ce qui me manque ici:

a=[]
for i in range(5):    
    a=a.append(i)
a

renvoie: 'NoneType' object has no attribute 'append'

21
jim basquiat

La fonction list.append ne renvoie aucune valeur (mais None), elle ajoute simplement la valeur à la liste que vous utilisez pour appeler cette méthode.

Dans le premier tour, vous affecterez None (parce que le non-retour de append) à a, puis au second tour, il tentera d'appeler a.append, a is None cela soulèvera l'exception que vous voyez

Il vous suffit de le changer pour:

a=[]
for i in range(5):    
    a.append(i)
a # the list with the new items.

Edit: Comme Juan a dit dans les commentaires, il retourne quelque chose, None

37
Rafael Aguilar

Vous n'avez pas besoin de l'affectation, list.append(x) ajoutera toujours x à a et il n'est donc pas nécessaire de redéfinir a.

a = []
for i in range(5):    
    a.append(i)
print(a)

c'est tout ce dont vous avez besoin. Cela fonctionne parce que lists sont mutables.

Voir aussi le docs sur les structures de données .

7
linusg

Pas besoin de réaffecter.

a=[]
for i in range(5):    
    a.append(i)
a
3
Muntaser Ahmed