PYTHON 2 LISTES PAR L'EXEMPLE février 2012
PLAN
•1. Définition d'une liste . EXEMPLE
• 2. Ajout d'un élément à une liste. EXEMPLE
• 3. Recherche dans une liste. EXEMPLE
• 4.Suppression d'éléments d'une liste. EXEMPLE
• 5.Utilisation des opérateurs de listes . EXEMPLE
Les listes sont le type de données à tout faire de Python.
En Python vous pouvez nommer votre variable comme bon vous semble
et Python se chargera de la gestion du typage.
|
En Python vous pouvez nommer votre variable comme bon vous semble et Python se chargera de la gestion du typage. |
1. Definition d'une liste
Exemple de Découpage d'une liste
Directement avec Python Shell
>>> li Entrée
['a', 'b', 'mpilgrim', 'z', 'exemple']
>>> li[1:3] Entrée
['b', 'mpilgrim']
>>> li[1:-1] Entrée
['b', 'mpilgrim', 'z']
>>> li[0:3] Entrée
['a', 'b', 'mpilgrim']
|
Vous pouvez obtenir un sous-ensemble d'une liste, appelé une «tranche» (slice), en spécifiant deux indices. La valeur de retour est une nouvelle liste contenant les éléments de la liste, dans l'ordre, en démarrant du premier indice de la tranche (dans ce cas li[1]), jusqu'à au second indice de la tranche non inclu (ici li[3]). |
|
Le découpage fonctionne si un ou les deux indices sont négatifs. Pour vous aider, vous pouvez les voir commer ceci : en lisant la liste de gauche à droite, le premier indice spécifie le premier élément que vous désirez et le second indice spécifie le premier élément dont vous ne voulez pas. La valeur de retour est tout ce qui se trouve entre les deux. |
|
Les listes sont indicées à partir de zéro, donc li[0:3] retourne les trois premiers éléments de la liste, en démarrant à li[0] jusqu'à li[3] non inclu. |
Exemple de Raccourci pour le découpage
Directement avec Python Shell
>>> li Entrée
['a', 'b', 'mpilgrim', 'z', 'exemple']
>>> li[:3] Entrée
['a', 'b', 'mpilgrim']
>>> li[3:] Entrée
['z', 'exemple']
>>> li[:] Entrée
['a', 'b', 'mpilgrim', 'z', 'exemple']
|
Si l'indice de tranche de gauche est 0, vous pouvez l'omettre et 0 sera implicite. Donc li[:3] est la même chose que li[0:3] dans le premier exemple. |
|
De la même manière, si l'indice de tranche de droite est la longueur de la liste, vous pouvez l'omettre. Donc li[3:] est pareil que li[3:5], puisque la liste a 5 éléments. |
|
Remarquez la symétrie. Dans cette liste de 5 éléments, li[:3] retourne les 3 premiers éléments et li[3:] retourne les deux derniers. En fait li[:n] retournera toujours les n premiers éléments et li[n:] le reste, quelle que soit la longueur de la liste. |
|
Si les deux indices sont omis, tous les éléments de la liste sont inclus dans la tranche. Mais ce n'est pas la même chose que la liste li; c'est une nouvelle liste qui contient les même éléments. li[:] est un raccourci permettant d'effectuer une copie complète de la liste. |
.2. Ajout d'éléments à une liste
Exemple d'Ajout d'éléments à une liste
Directement avec Python shell
>>> li Entrée
['a', 'b', 'mpilgrim', 'z', 'exemple']
>>> li.append("new")
>>> li Entrée
['a', 'b', 'mpilgrim', 'z', 'exemple', 'new']
>>> li.insert(2, "new")
>>> li Entrée
['a', 'b', 'new', 'mpilgrim', 'z', 'exemple', 'new']
>>> li.extend(["two", "elements"])
>>> li Entrée
['a', 'b', 'new', 'mpilgrim', 'z', 'exemple', 'new', 'two', 'elements']
|
append ajoute un élément à la fin de la liste. |
|
insert insère un élément dans la liste. L'argument numérique est l'indice du premier élément qui sera décalé. Notez que les éléments de la liste ne sont pas obligatoirement uniques ; il y a maintenant 2 éléments distincts avec la valeur 'new', li[2] and li[6]. |
|
extend concatène des listes. Notez que vous n'appelez pas extend avec plusieurs arguments mais bien avec un seul argument qui est une liste. Dans le cas présent, la liste est composée de deux éléments. |
Exemple de Différence entre extend et append
Directement avec Python shell
>>> li = ['a', 'b', 'c']
>>> li.extend(['d', 'e', 'f'])
>>> li Entrée
['a', 'b', 'c', 'd', 'e', 'f']
>>> len(li) Entrée
6
>>> li[-1] Entrée
'f '
>>> li = ['a', 'b', 'c']
>>> li.append(['d', 'e', 'f'])
>>> li Entrée
['a', 'b', 'c', ['d', 'e', 'f']]
>>> len(li) Entrée
4
>>> li[-1] Entrée
['d', 'e', 'f ']
|
Les listes ont deux méthodes, extend et append, qui semblent faire la même chose, mais sont en fait complètement différentes. extend prend un seul argument, qui est toujours une liste et ajoute chacun des éléments de cette liste à la liste originelle. |
|
Ici nous avons une liste de trois éléments ('a', 'b' et 'c') et nous utilisons extended pour lui ajouter une liste de trois autres éléments ('d', 'e' et 'f'), ce qui nous donne une liste de six éléments. |
|
Par contre, append prend un argument, qui peut être de n'importe quel type et l'ajoute simplement à la fin de la liste. Ici, nous appelons append avec un argument, qui est une liste de trois éléments. |
|
Maintenant, la liste originelle qui avait trois éléments en contient quatre. Pourquoi quatre ? Parce que le dernier élément que nous venons d'ajouter est lui-même une liste. Les listes peuvent contenir n'importe quel type de données, y compris d'autres listes. En fonction du but recherché, faites attention de ne pas utiliser append si vous pensez en fait à extend. |
.3. Recherche dans une liste
Exemple de Recherche dans une liste
Directement dans Python shell
>>> li Entrée
['a', 'b', 'new', 'mpilgrim', 'z', 'exemple', 'new', 'two', 'elements']
>>> li.index("exemple") Entrée
5
>>> li.index("new") Entrée
2
>>> li.index("c") Entrée
Traceback (innermost last):
File "<interactive input>", line 1, in ?
ValueError: list.index(x): x not in list
>>> "c" in li Entrée
False
|
index trouve la première occurrence d'une valeur dans la liste et retourne son indice. |
|
index trouve la première occurrence d'une valeur dans la liste. Dans ce cas, new apparaît à deux reprises dans la liste, li[2] et li[6], mais index ne retourne que le premier indice, 2. |
|
Si la valeur est introuvable dans la liste, Python déclenche une exception. C'est sensiblement différent de la plupart des autres langages qui retournent un indice invalide. Si cela peut sembler gênant, c'est en fait une bonne chose car cela signifie que votre programme se plantera à la source même du problème plutôt qu'au moment ou vous tenterez de manipuler l'indice non valide. |
|
Pour tester la présence d'une valeur dans la liste, utilisez in, qui retourne True si la valeur a été trouvée et False dans le cas contraire. |
|
Avant la version 2.2.1, Python n'avait pas de type booléen. Pour compenser cela, Python acceptait pratiquement n'importe quoi dans un contexte requérant un booléen (comme une instruction if), en fonction des règles suivantes :
- 0 est faux, tous les autres nombres sont vrai.
- Une chaîne vide ("") est faux, toutes les autres chaînes sont vrai.
- Une liste vide ([]) est faux, toutes les autres listes sont vrai.
- Un tuple vide (()) est faux, tous les autres tuples sont vrai.
- Un dictionnaire vide ({}) est faux, tous les autres dictionnaires sont vrai.
Ces règles sont toujours valides en Python 2.3.3 et au-delà, mais vous pouvez maintenant utiliser un véritable booléen, qui a pour valeur True ou False. Notez la majuscule, ces valeurs comme tout le reste en Python, sont sensibles à la casse. |
4. Suppression d'éléments d'une liste
Exemple d' Enlever des éléments d'une liste
Directement dans Python shell
>>> li Entrée
['a', 'b', 'new', 'mpilgrim', 'z', 'exemple', 'new', 'two', 'elements']
>>> li.remove("z")
>>> li Entrée
['a', 'b', 'new', 'mpilgrim', 'exemple', 'new', 'two', 'elements']
>>> li.remove("new")
>>> li Entrée
['a', 'b', 'mpilgrim', 'exemple', 'new', 'two', 'elements']
>>> li.remove("c") Entrée
Traceback (innermost last):
File "<interactive input>", line 1, in ?
ValueError: list.remove(x): x not in list
>>> li.pop() Entrée
'elements'
>>> li Entrée
['a', 'b', 'mpilgrim', 'exemple', 'new', 'two']
|
remove enlève la première occurrence de la valeur de la liste. |
|
remove enlève uniquement la première occurence de la valeur. Dans ce cas, new apparaît à deux reprises dans la liste mais li.remove("new") a seulement retiré la première occurrence. |
|
Si la valeur est introuvable dans la liste, Python déclenche une exception. Ce comportement est identique à celui de la méthode index. |
|
pop est un spécimen intéressant. Il fait deux choses : il enlève le dernier élément de la liste et il retourne la valeur qui a été enlevé. Notez que cela diffère de li[-1] qui retourne une valeur mais ne modifie pas la liste et de li.remove(valeur) qui altère la liste mais ne retourne pas de valeur. |
.5. Utilisation des opérateurs de listes
Exemple d' Opérateurs de listes
Directement dans Python shell
>>> li = ['a', 'b', 'mpilgrim']
>>> li = li + ['exemple', 'new']
>>> li Entrée
['a', 'b', 'mpilgrim', 'exemple', 'new']
>>> li += ['two']
>>> li Entrée
['a', 'b', 'mpilgrim', 'exemple', 'new', 'two']
>>> li = [1, 2] * 3
>>> li Entrée
[1, 2, 1, 2, 1, 2]
|
Les listes peuvent être concaténées à l'aide de l'opérateur +. liste = liste + autreliste est équivalent à list.extend(autreliste). Mais l'opérateur + retourne une nouvelle liste concaténée comme une valeur alors que extend modifie une liste existante. Cela implique que extend est plus rapide, surtout pour de grandes listes. |
|
Python supporte l'opérateur +=. li += ['two'] est équivalent à li = li + ['two']. L'opérateur += fonctionne pour les listes, les chaînes et les entiers. |
|
L'opérateur * agit sur les liste comme un répéteur. li = [1, 2] * 3 est équivalent à li = [1, 2] + [1, 2] + [1, 2], qui concatène les trois listes en une seule. |