253 votes

Création d’une liste vide en Python

Quelle est la meilleure façon de créer une nouvelle liste de vide en Python ?

ou

Je demande cela pour deux raisons :

  1. Des raisons techniques, qui est plus rapide. (création d’une classe provoque des frais généraux ?)
  2. Lisibilité du code - qui est la convention standard.

349voto

unutbu Points 222216

Voici comment vous pouvez tester qui morceau de code est 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 plus probable qu'une infime partie de votre programme, afin de se soucier de ce qui est probablement erronée.

La lisibilité est très subjectif. Je préfère [], mais certains très bien les gens comme Alex Martelli, préférez list() parce que c'est prononçable.

142voto

Nas Banov Points 7293

List() est intrinsèquement plus lent que [de], parce que

un) il y a recherche de symbole (aucun moyen pour python à savoir à l’avance si vous ne pas juste redéfinir liste pour être autre chose !),

b) il y a appel d’une fonction,

c) puis il faut vérifier s’il y avait d’argument passé (donc il peut créer liste avec des éléments de celle-ci) PS aucun dans notre cas, mais il est cocher « if »

Dans la plupart des cas la différence de vitesse ne fera aucune différence pratique cependant.

18voto

Georg Schölly Points 63123

J’utilise `` .

  1. Il est plus rapide parce que la notation de liste est un court circuit.
  2. Création d’une liste avec les éléments devrait ressembler presque la même que la création d’une liste sans, pourquoi y aurait-il une différence ?

1voto

Terence Honles Points 506

Je voudrais écrire []... mais je ne peux pas donner de détails sur la vitesse (je doute que cela ferait une différence autre que la fonction n’a pas à figurer dehors si il a été remis un générateur ou un autre objet itérable)

-3voto

jpcgt Points 117

Je serais prudent sur le contexte...

l=[]

n'est PAS de créer une liste! [] est une liste établie à l'avance, et l'instruction ci-dessus est seulement à la création d'une référence. Et ce n'est PAS une constante, c'est un objet mutable. Par exemple si vous n'

def f(l=[]):
    ...

vous allez découvrir que vous n'êtes pas de la création de la liste chaque fois que vous appelez f, mais vous avez plutôt créé une "statique" de la variable l. La bonne façon de le faire est

def(l=list()):
    ...

La bonne façon de créer une liste est - list().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X