Liste Python vs tuples (avec exemples)

Dans cet article, nous allons apprendre les principales différences entre la liste et les tuples et comment utiliser ces deux structures de données.

Les listes et tuples stockent un ou plusieurs objets ou valeurs dans un ordre spécifique. Les objets stockés dans une liste ou un tuple peuvent être de n'importe quel type, y compris le type rien défini par le mot-clé None.

Les listes et les tuples sont similaires dans la plupart des contextes, mais il existe des différences que nous allons trouver dans cet article.

Différences de syntaxe

La syntaxe de la liste et du tuple est légèrement différente. Les listes sont entourées de crochets ()et les tuples sont entre parenthèses ().

Exemple 1.1: Créer une liste ou créer un tuple

 list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)

Production:

 (1,2,3,4) (1,2,3,4)

Ci-dessus, nous avons défini une variable appelée list_num qui contient une liste de nombres de 1à 4. La liste est entourée de crochets (). De plus, nous avons défini une variable tup_num; qui contient un tuple de nombre de 1à 4. Le tuple est entouré de parenthèses ().

En python, nous avons une type()fonction qui donne le type d'objet créé.

Exemple 1.2: Trouver le type de structure de données à l'aide de la fonction type ()

 type(list_num) type(tup_num)

Production:

 liste tuple

Liste mutable vs tuples immuables

La liste a une nature mutable, c'est-à-dire que la liste peut être changée ou modifiée après sa création selon les besoins alors que le tuple a une nature immuable, c'est-à-dire que le tuple ne peut être changé ou modifié après sa création.

Exemple 2.1: Modifier une liste d'éléments par rapport à un tuple

 list_num(2) = 5 print(list_num) tup_num(2) = 5

Production:

 (1,2,5,4) Traceback (dernier appel en dernier): Fichier "python", ligne 6, dans TypeError: l'objet 'tuple' ne prend pas en charge l'attribution d'éléments

Dans le code ci-dessus, nous avons attribué 5à list_num à l'index 2et nous l'avons trouvé 5à l'index 2en sortie. De plus, nous avons assigné 5tup_num à index 2et nous avons obtenu type error. Nous ne pouvons pas modifier le tuple en raison de sa nature immuable.

Remarque: comme le tuple est immuable, leur taille est fixe et la taille de la liste est variable.

Opérations disponibles

Lists a plus de fonctions intégrées que celle de tuple. Nous pouvons utiliser la dir((object))fonction intégrée pour obtenir toutes les fonctions associées pour la liste et le tuple.

Exemple 3.1: Répertoire de listes

 dir(list_num)

Production:

('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', ' __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', ' copier ',' compter ',' étendre ',' index ','insert ',' pop ',' remove ',' reverse ',' sort ')

Exemple 3.2: Répertoire de tuples

 dir(tup_num)

Production:

 ('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', ' __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ',' __reduce_ex__ ' , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')

Nous pouvons clairement voir qu'il y a tellement de fonctionnalités supplémentaires associées à une liste sur un tuple.Nous pouvons faire des opérations d'insertion et de pop, en supprimant et en triant des éléments dans la liste avec des fonctions intégrées qui ne sont pas disponibles dans Tuple.

Comparaison de taille

L'opération de tuples a une taille plus petite que celle de la liste, ce qui la rend un peu plus rapide mais pas tellement à mentionner jusqu'à ce que vous ayez un grand nombre d'éléments.

Exemple 5.1: Calculer la taille de la liste par rapport au tuple

 a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())

Production:

 a = 104 b = 120

Dans le code ci-dessus, nous avons le tuple a et la liste b avec les mêmes éléments mais la taille du tuple est inférieure à la liste.

Différents cas d'utilisation

À première vue, il peut sembler que les listes peuvent toujours remplacer les tuples. Mais les tuples sont des structures de données extrêmement utiles

  1. L'utilisation d'un tuple au lieu d'une liste peut donner au programmeur et à l'interpréteur un indice que les données ne doivent pas être modifiées.
  2. Les tuples sont couramment utilisés comme l'équivalent d'un dictionnaire sans clés pour stocker les données. Par exemple,
     (('Swordfish', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taxi Driver', 'Martin Scorsese', 1976))
    L'exemple ci-dessus contient des tuples dans la liste qui contient une liste de films.
  3. La lecture des données est plus simple lorsque les tuples sont stockés dans une liste. Par exemple,
     ((2,4), (5,7), (3,8), (5,9))
    est plus facile à lire que
     ((2,4), (5,7), (3,8), (5,9))

Le tuple peut également être utilisé comme clé dans le dictionnaire en raison de sa nature hachable et immuable, tandis que les listes ne sont pas utilisées comme clé dans un dictionnaire car la liste ne peut pas gérer __hash__()et a une nature modifiable.

 key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid 

Points clés à retenir:

  1. La syntaxe littérale des tuples est indiquée par des parenthèses ()tandis que la syntaxe littérale des listes est indiquée par des crochets ().
  2. Les listes ont une longueur variable, le tuple a une longueur fixe.
  3. La liste a une nature mutable, le tuple a une nature immuable.
  4. La liste a plus de fonctionnalités que le tuple.

Articles intéressants...