Quelle est la différence?
Quels sont les avantages / inconvénients des tuples / listes?
Quelle est la différence?
Quels sont les avantages / inconvénients des tuples / listes?
En dehors de tuples immuable, il y a aussi une distinction sémantique qui devraient guider leur utilisation. Les Tuples sont hétérogènes structures de données (c'est à dire, leurs entrées ont des significations différentes), alors que les listes sont homogènes séquences. Les Tuples de structure, les listes de commande.
À l'aide de cette distinction rend le code plus explicite et compréhensible.
Un exemple serait paires de page et le numéro de ligne de sites de référence dans un livre, par exemple:
my_location = (42, 11) # page number, line number
Vous pouvez ensuite l'utiliser comme une clé dans un dictionnaire pour stocker des notes sur les lieux. Une liste sur l'autre main peut être utilisé pour stocker de multiples endroits. Naturellement, on pourrait vouloir ajouter ou supprimer des emplacements de la liste, il est donc logique que les listes sont mutables. D'autre part, il n'a probablement pas de sens pour modifier le numéro de page dans un emplacement n-uplet tout en gardant le numéro de la ligne intact, ce serait vous donner un complètement nouveau. D'autre part, il pourrait y avoir des situations où il est parfaitement logique pour corriger simplement le numéro de la ligne (sans remplacement de l'ensemble de la n-uplet).
Il y a quelques articles intéressants sur cette question, par exemple "Python les Tuples ne sont Pas Constant Listes" ou "la Compréhension de tuples par rapport aux listes en Python". L'officiel de Python de la documentation mentionne également ("n-Uplets sont immuables, et contiennent généralement une séquence hétérogène ...").
Dans un langage statiquement typé comme Haskell les valeurs dans un tuple ont généralement différents types et la longueur de la tuple doit être fixe. Dans une liste les valeurs ont tous le même type et la longueur n'est pas fixe. Donc, la différence est très évident.
Il y a enfin le namedtuple en Python, ce qui est logique car un n-uplet est déjà censé avoir une structure. Cela souligne l'idée que les tuples sont un poids léger alternative pour les classes et les instances.
La différence entre la liste et le n-uplet
Taille
a = tuple(range(1000))
b = list( range(1000))
a.__sizeof__() # 8024
b.__sizeof__() # 9088
En raison de la petite taille d'un n-uplet de fonctionnement avec un peu plus rapide, mais pas tant que ça de parler de sujet jusqu'à ce que vous avez une énorme quantité d'éléments.
Opérations autorisées
b = [1,2]
b[0] = 3 # [3, 2]
a = (1,2)
a[0] = 3 # Error
ce que cela signifie que vous ne pouvez pas supprimer ou tri élément d'un tuple. Dans le même temps, vous pourriez ajouter un nouvel élément à la fois de la liste et de tuple avec la seule différence que vous allez changer l'id de la n-uplet par l'ajout de l'élément
a = (1,2)
b = [1,2]
id(a) # 140230916716520
id(b) # 748527696
a += (3,) # (1, 2, 3)
b += [3] # [1, 2, 3]
id(a) # 140230916878160
id(b) # 748527696
L'utilisation de la
Vous ne pouvez pas utiliser la liste comme un dictionnaire identificateur
a = (1,2)
b = [1,2]
c = {a: 1} # OK
c = {b: 1} # Error
La principale différence est que les tuples sont immuables. Cela signifie que vous ne pouvez pas modifier les valeurs dans un tuple une fois que vous avez créé.
Donc, si vous avez besoin de modifier les valeurs d'utiliser une Liste.
Si vous utilisez un tuple je peux penser de ces avantages:
Les listes sont mutables; les tuples ne sont pas.
À partir de docs.python.org/2/tutorial/datastructures.html
Les Tuples sont immuables, et contiennent généralement une séquence hétérogène de les éléments qui sont accessibles via le déballage (voir plus loin dans cette section) ou de l'indexation (ou même par l'attribut dans le cas de namedtuples). Listes sont mutables, et leurs éléments sont généralement homogènes et sont accessible par une itération sur la liste.
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.