Quel est le meilleur moyen de créer une nouvelle liste vide en Python?
l = []
ou
l = list()
Je demande cela pour deux raisons:
Voici comment vous pouvez tester quel morceau de code est le plus rapide:
% python -mtimeit "l=[]"
10000000 loops, best of 3: 0.0711 usec per loop
% python -mtimeit "l=list()"
1000000 loops, best of 3: 0.297 usec per loop
Cependant, dans la pratique, cette initialisation est très probablement une très petite partie de votre programme, vous inquiétez donc à ce sujet.
La lisibilité est très subjective. Je préfère []
, mais certaines personnes très informées, comme Alex Martelli, préfèrent list()
car il est prononçable .
list()
est intrinsèquement plus lent que []
, car
il y a recherche de symbole (aucun moyen pour python de savoir à l'avance si vous n'avez pas simplement redéfini la liste pour qu'elle soit autre chose!),
il y a invocation de fonction,
ensuite, il doit vérifier si un argument itérable a été passé (pour pouvoir créer une liste avec des éléments) ps. aucune dans notre cas mais il y a un chèque "si"
Dans la plupart des cas, la différence de vitesse ne fera toutefois aucune différence pratique.
J'utilise []
.
Je ne le sais pas vraiment, mais il me semble, par expérience, que jpcgt est en fait juste. Exemple suivant: Si j'utilise le code suivant
t = [] # implicit instantiation
t = t.append(1)
dans l'interprète, l'appel de t me donne simplement "t" sans liste, et si j'ajoute autre chose, par ex.
t = t.append(2)
J'obtiens l'erreur "L'objet 'NoneType' n'a pas d'attribut 'append'". Si, toutefois, je crée la liste en
t = list() # explicit instantiation
alors cela fonctionne bien.