Cela dépend de l'implémentation Python, mais append
ne sera jamais plus lent que la deuxième variante.
a += [1]
crée une liste temporaire avec un élément. De plus, l'opérateur +=
doit effectuer un travail supplémentaire pour déterminer la taille de la nouvelle liste. Une bonne implémentation Python peut réduire la surcharge en ne construisant pas réellement la liste [1]
en mémoire.
Comme avec pratiquement toutes les questions de performance, cela n'a pas d'importance à moins que votre code ne soit vraiment critique. Avec cpython 2.7, j'ai mesuré les valeurs suivantes:
>>> import timeit
>>> timeit.timeit('l = []\nfor i in range(200):\n\tl.append(1)\n')
27.95561385154724
>>> timeit.timeit('l = []\nfor i in range(200):\n\tl += [1]\n')
37.52841401100159
Je dirais que la seconde est plus sujette aux erreurs. Est-ce que vous ajoutez le numéro '1' ou la liste' [1] '? '.append()' et '.extend()' rendent cette distension claire, tout en ne nécessitant pas les parenthèses externes confuses. –
AFAICT, la notation de parenthèse est identique à 'a.extend ([1])', qui agit exactement comme 'a.append (1)'. Le seul inconvénient est que la deuxième approche est à peu près deux fois plus lente. – Blender
Mais '.append()' et '.extend()' sont encore plus faciles à confondre. Personnellement je trouve '+ = [1]' absolument clair. C'est ce que vous avez l'habitude de faire, je suppose ... – alexis