Opérations sur les objets de type list
☘
Concaténation☘
On peut concaténer (ajouter bout à bout) deux tableaux avec l'opérateur +
et ainsi créer un nouveau tableau :
>>> a = [7, 2, 1789, 42]
>>> b = [666, 2022]
>>> c = a + b
>>> c
[7, 2, 1789, 42, 666, 2022]
Comme pour la concaténation de chaînes de caractères, la concaténation de tableaux n'est pas commutative :
>>> a = [7, 2, 1789, 42]
>>> b = [666, 2022]
>>> c = b + a
>>> c
[666, 2022, 7, 2, 1789, 42]
Attention
L'opérateur +
ne peut pas agir sur un tableau et un entier (ou un autre objet qui n'est pas de type list
) : cela provoque une erreur.
Remarque☘
La concaténation crée bien un nouvel objet de type list
.
Ainsi, dans le code suivant :
1 2 3 4 5 6 7 8 |
|
on n'a pas modifié le tableau [7, 2, 1789, 42]
initial même si le nouveau tableau porte l'étiquette a
.
- En ligne 1, on crée l'objet
[7, 2, 1789, 42]
puis on lui « colle » l'étiquettea
. - En ligne 3, on crée l'objet
[666, 2022]
puis on lui colle l'étiquetteb
. - En ligne 5, on concatène les deux tableaux étiquetés
a
etb
: on crée ainsi un nouvel objet de typelist
[7, 2, 1789, 42, 666, 2022]
.
On « décolle » ensuite l'étiquettea
de son ancien objet pour venir la coller sur ce nouvel objet (à ce stade, l'objet[7, 2, 1789, 42]
n'est plus étiqueté : il n'est donc plus accessible).
Répétition☘
On peut répéter (ajouter bout à bout plusieurs fois) un tableau en le multipliant par un entier avec l'opérateur *
:
>>> tab = [100]*6
>>> tab
[100, 100, 100, 100, 100, 100]
La multiplication par l'entier peut s'effectuer avant ou après le tableau :
>>> tab = 6*[100]
>>> tab
[100, 100, 100, 100, 100, 100]
Prolonger un tableau☘
On peut prolonger un tableau, c'est-à-dire lui incorporer un élément supplémentaire à la fin, en utilisant la méthode .append()
:
>>> tab = [7, 2, 1789, 42]
>>> tab.append(666)
>>> tab
[7, 2, 1789, 42, 666]
Exemple☘
Définir la fonction concatene()
qui prend en paramètre deux tableaux et qui renvoie un tableau contenant tous les éléments du premier suivis de tous les éléments du second.
Bien évidemment, il est interdit d'utiliser la concaténation...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Une (bonne) solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Une (mauvaise) solution
Le code ci-dessous était peut-être votre première idée :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Cependant, du fait du caractère muable des listes en Python, il va produire des effets inattendus.
Pour le constater, exécutez votre programme puis tapez les instructions suivantes dans la console :
>>> tab1 = [0, 1, 2, 3, 4]
>>> tab2 = [7, 8, 9, 10, 11, 12, 13]
>>> T = concatene(tab1, tab2)
>>> T
[0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13]
On pourait croire que tout va bien. Mais si on redemande le contenu de la variable tab1
:
>>> tab1
[0, 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13]
tab1
a été modifiée et qu'elle contient les les mêmes éléments que T
.
Cette particularité sera expliquée dans le chapitre sur la portée des variables.