qui est plus efficace? Quelle est l'utilisation typique de chacun? P>
4 Réponses :
Les listes sont mutables (peuvent être modifiées), les tuples sont immuables. Utilisation typique: il sonne plutôt une trite mais vous utilisez des listes lorsque vous devez modifier les valeurs. Les tuples sont généralement un peu plus efficaces en raison de leur immuabilité (à moins que vous ne les utilisiez comme des listes et les dupliquer beaucoup ...) p>
Une liste est mutable em>, vous pouvez y ajouter des éléments. Un tuple n'est pas, ce qui signifie qu'il est (légèrement) plus efficace. Les tuples sont également hachables em>, afin que par exemple. la clé d'un dictionnaire. P>
Lire Ce . p>
Le lien ignore totalement ensemble (et d'autres collections moins couramment utilisées qui sont fondamentalement des variations des autres - FROZENSET est un ensemble immuable, octets une liste (avec un peu de sucre syntaxique), etc.). Toujours +1
SET code> n'a pas été mentionné dans la question, alors pourquoi devrait être mentionné dans la réponse? Oui,
SET CODE> et
FROZENSET CODE> avoir des différences comparables entre
Liste code> et
tuple code>. Pendant que je n'utilise pas
définir code> S presque aussi fréquemment que la liste
code> s et
tuple code> s, ils constituent un outil inestimable dans ma boîte à outils.
Je suis nit-cueillette, mais l'immuabilité n'implique pas de hashaabilité, plus d'être mutable implique que quelque chose ne soit pas hachable. Par exemple, des instances de classes définies par l'utilisateur sont hautables par défaut, mais cela ne signifie pas qu'ils sont immuables. Certes, il serait inhabituel pour un type immuable ne pas être hachable, mais cela est certainement possible.
Les listes sont des séquences mutables, avec des lots et de nombreux procédés (à la fois de mutation et de la mutation et de la mutation), qui sont le plus souvent utilisés comme conteneurs à usage général (leurs articles peuvent être des objets de tous les types, bien qu'il soit parfois considéré comme mieux considéré comme mieux considéré comme considéré comme mieux considéré style pour les listes d'éléments du même type ou de même types à utiliser équivalent).
Les tuples sont des séquences immuables, avec très peu de méthodes (toutes les personnes spéciales non mutantes), qui sont le plus souvent utilisés lorsque vous avez besoin d'une immuabilité Dans le but d'utiliser un conteneur comme élément d'un ensemble ou d'une clé dans un dict (bien que les éléments devront également être des immutables, par exemple des cordes, des chiffres ou d'autres tuples imbriqués, pour que cela fonctionne). Leurs articles peuvent être des objets de tous types du tout et il est parfaitement normal pour les tuples d'avoir des éléments de nombreux types différents et distincts. P>
Il y a quelques cas dans lesquels une tuple ou une liste servirait tout aussi Eh bien, et dans ces rares cas, le fait que les tuples sont un peu plus petits et plus rapides à construire peuvent être utilisés pour infuser la décision en faveur des tuples. Par exemple, lorsqu'une fonction doit renvoyer plusieurs résultats, il est le plus normal d'utiliser P>
print r[1]
Je pense que les documents doivent passer la brillance de cela, amument dans de nombreuses instances du tuple nommé, il n'y a pas de surcharge supplémentaire, mais il y a une certaine mémoire supplémentaire utilisée, car vous créez efficacement un nouveau type (ce qui compte bien sûr certains , bien que légère empreinte de mémoire). (Vous avez toujours un +1, BTW, pour une réponse très approfondie).
Après une lecture de Python Doc. Sur les types intégrés , j'ai créé la table ci-dessous pour afficher les principales différences entre les six conteneurs itares.
>>> a[{5}] = 56 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set' >>> a[[5]] = 56 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' >>> a[{5:6}] = 56 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'dict' >>> a[-555] = 666 >>>
Relatif (sinon un duplicata): Stackoverflow. com / questions / 3340539 / ...
@Adam - ne pas dupliquer, je pense, mais très pertinent.