2009-10-04 6 views

Répondre

14

-méthodes sur La mutation des listes ont tendance à retourner None, pas la liste modifiée comme prévu - ces metods effectuent leur effet en modifiant la liste en place, non pas en construisant et en retournant un nouveau. Donc, print numbers au lieu de print clean vous montrera la liste modifiée.

Si vous devez garder numbers intacte, tout d'abord faire une copie, puis vous modifiez la copie:

clean = list(numbers) 
clean.insert(3, 'four') 

cela a pour effet global que vous semblez désirer: numbers est inchangé, clean est la liste modifiée .

+1

J'ai trouvé la solution utile, je vous remercie. Mais je me demandais pourquoi créer 'clean' avec' list (numbers) 'au lieu de directement' numbers' dont le type est déjà une liste? – Francis

+1

J'ai dit, précisément, "Si vous avez besoin de garder les chiffres intacts, d'abord vous faites une copie, puis vous modifiez la copie". 'numbers' est une liste, mais sauf si vous faites une copie, vous * modifiez * cette liste; et il semble que l'OP voulait garder l'original intact tout en faisant une copie modifiée. –

+1

En tant que débutant de Python, je pensais que l'assignation de la variable 'clean' ferait littéralement une copie de' numbers', donc l'opération suivante sur 'clean' garderait' numbers' intacte. – Francis

7

La méthode insert modifie la liste en place et ne renvoie pas de nouvelle référence. Essayez:

>>> numbers = [1, 2, 3, 5, 6, 7] 
>>> numbers.insert(3, 'four') 
>>> print numbers 
[1, 2, 3, 'four', 5, 6, 7] 
1

insert insérera l'élément dans la liste donnée. Imprimez les nombres à la place et vous verrez vos résultats. insert ne retourne pas la nouvelle liste.

1

L'opérateur list.insert() ne retourne rien, ce que vous voulez sans doute est:

print numbers 
Questions connexes