Python 2 : Différence entre versions
De TARENTINO
Aller à la navigationAller à la recherche| Ligne 152 : | Ligne 152 : | ||
Il est possible de compter le nombre d'items d'une liste avec la fonction len . | Il est possible de compter le nombre d'items d'une liste avec la fonction len . | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = [1,2,3,5,10] | + | >>> liste = [1,2,3,5,10] |
| − | >>> len(liste) | + | >>> len(liste) |
| − | 5 | + | 5 |
</syntaxhighlight> | </syntaxhighlight> | ||
| Ligne 160 : | Ligne 160 : | ||
* Méthode count . | * Méthode count . | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = ["a","a","a","b","c","c"] | + | >>> liste = ["a","a","a","b","c","c"] |
| − | >>> liste.count("a") | + | >>> liste.count("a") |
| − | 3 | + | 3 |
| − | >>> liste.count("c") | + | >>> liste.count("c") |
| − | 2 | + | 2 |
</syntaxhighlight> | </syntaxhighlight> | ||
| Ligne 170 : | Ligne 170 : | ||
* méthode index. | * méthode index. | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = ["a","a","a","b","c","c"] | + | >>> liste = ["a","a","a","b","c","c"] |
| − | >>> liste.index("b") | + | >>> liste.index("b") |
| − | 3 | + | 3 |
</syntaxhighlight> | </syntaxhighlight> | ||
=== Manipuler une liste === | === Manipuler une liste === | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = [1, 10, 100, 250, 500] | + | >>> liste = [1, 10, 100, 250, 500] |
| − | >>> liste[0] | + | >>> liste[0] |
| − | 1 | + | 1 |
| − | >>> liste[-1] # Cherche la dernière occurence | + | >>> liste[-1] # Cherche la dernière occurence |
| − | 500 | + | 500 |
| − | >>> liste[-4:] # Affiche les 4 dernières occurrences | + | >>> liste[-4:] # Affiche les 4 dernières occurrences |
| − | [500, 250, 100, 10] | + | [500, 250, 100, 10] |
| − | >>> liste[:] # Affiche toutes les occurences | + | >>> liste[:] # Affiche toutes les occurences |
| − | [1, 10, 100, 250, 500] | + | [1, 10, 100, 250, 500] |
| − | >>> liste[2:4] = [69, 70] | + | >>> liste[2:4] = [69, 70] |
| − | [1, 10, 69, 70, 500] | + | [1, 10, 69, 70, 500] |
| − | >>> liste[:] = [] # vide la liste | + | >>> liste[:] = [] # vide la liste |
| − | [] | + | [] |
</syntaxhighlight> | </syntaxhighlight> | ||
| Ligne 194 : | Ligne 194 : | ||
* Pour afficher les valeurs d'une liste, on peut utiliser une boucle: | * Pour afficher les valeurs d'une liste, on peut utiliser une boucle: | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = ["a","d","m"] | + | >>> liste = ["a","d","m"] |
| − | >>> for lettre in liste: | + | >>> for lettre in liste: |
| − | ... print lettre | + | ... print lettre |
| − | ... | + | ... |
| − | a | + | a |
| − | d | + | d |
| − | m | + | m |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | * | + | * Pour récupérer l'index, utiliser la fonction enumerate . |
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> for lettre in enumerate(liste): | + | >>> for lettre in enumerate(liste): |
| − | ... print lettre | + | ... print lettre |
| − | ... | + | ... |
| − | (0, 'a') | + | (0, 'a') |
| − | (1, 'd') | + | (1, 'd') |
| − | (2, 'm') | + | (2, 'm') |
</syntaxhighlight> | </syntaxhighlight> | ||
'''Les valeurs retournées par la boucle sont des tuples.''' | '''Les valeurs retournées par la boucle sont des tuples.''' | ||
| + | |||
=== Copier une liste === | === Copier une liste === | ||
* Beaucoup de débutants font l'erreur de copier une liste de cette manière | * Beaucoup de débutants font l'erreur de copier une liste de cette manière | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> x = [1,2,3] | + | >>> x = [1,2,3] |
| − | >>> y = x | + | >>> y = x |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | * Or si | + | * Or si on change une valeur de la liste y , la liste x sera elle aussi affectée par cette modification: |
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> x = [1,2,3] | + | >>> x = [1,2,3] |
| − | >>> y = x | + | >>> y = x |
| − | >>> y[0] = 4 | + | >>> y[0] = 4 |
| − | >>> x | + | >>> x |
| − | [4, 2, 3] | + | [4, 2, 3] |
</syntaxhighlight> | </syntaxhighlight> | ||
* En fait cette syntaxe permet de travailler sur un même élément nommé différemment | * En fait cette syntaxe permet de travailler sur un même élément nommé différemment | ||
| Ligne 233 : | Ligne 234 : | ||
* Alors comment copier une liste qui sera indépendante? | * Alors comment copier une liste qui sera indépendante? | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> x = [1,2,3] | + | >>> x = [1,2,3] |
| − | >>> y = x[:] | + | >>> y = x[:] |
| − | >>> y[0] = 9 | + | >>> y[0] = 9 |
| − | >>> x | + | >>> x |
| − | [1, 2, 3] | + | [1, 2, 3] |
| − | >>> y | + | >>> y |
| − | [9, 2, 3] | + | [9, 2, 3] |
</syntaxhighlight> | </syntaxhighlight> | ||
* Pour des données plus complexes, utiliser la fonction deepcopy du module copy | * Pour des données plus complexes, utiliser la fonction deepcopy du module copy | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> import copy | + | >>> import copy |
| − | >>> x = [[1,2], 2] | + | >>> x = [[1,2], 2] |
| − | >>> y = copy.deepcopy(x) | + | >>> y = copy.deepcopy(x) |
| − | >>> y[1] = [1,2,3] | + | >>> y[1] = [1,2,3] |
| − | >>> x | + | >>> x |
| − | [[1, 2], 2] | + | [[1, 2], 2] |
| − | >>> y | + | >>> y |
| − | [[1, 2], [1, 2, 3]] | + | [[1, 2], [1, 2, 3]] |
</syntaxhighlight> | </syntaxhighlight> | ||
=== Transformer une string en liste === | === Transformer une string en liste === | ||
| − | |||
* Transformer une chaine de caractère en liste. Méthode split . | * Transformer une chaine de caractère en liste. Méthode split . | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> ma_chaine = "Olivier:ENGEL:Strasbourg" | + | >>> ma_chaine = "Olivier:ENGEL:Strasbourg" |
| − | >>> ma_chaine.split(":") | + | >>> ma_chaine.split(":") |
| − | ['Olivier', 'ENGEL', 'Strasbourg'] | + | ['Olivier', 'ENGEL', 'Strasbourg'] |
</syntaxhighlight> | </syntaxhighlight> | ||
| Ligne 264 : | Ligne 264 : | ||
* Méthode " join ". | * Méthode " join ". | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = ["Olivier","ENGEL","Strasbourg"] | + | >>> liste = ["Olivier","ENGEL","Strasbourg"] |
| − | >>> ":".join(liste) | + | >>> ":".join(liste) |
| − | 'Olivier:ENGEL:Strasbourg' | + | 'Olivier:ENGEL:Strasbourg' |
</syntaxhighlight> | </syntaxhighlight> | ||
=== Trouver un item dans une liste === | === Trouver un item dans une liste === | ||
* Pour savoir si un élément est dans une liste, utiliser le mot clé in de cette manière: | * Pour savoir si un élément est dans une liste, utiliser le mot clé in de cette manière: | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = [1,2,3,5,10] | + | >>> liste = [1,2,3,5,10] |
| − | >>> 3 in liste | + | >>> 3 in liste |
| − | True | + | True |
| − | >>> 11 in liste | + | >>> 11 in liste |
| − | False | + | False |
</syntaxhighlight> | </syntaxhighlight> | ||
=== La fonction range === | === La fonction range === | ||
* La fonction range génère une liste composée d'une simple suite arithmétique. | * La fonction range génère une liste composée d'une simple suite arithmétique. | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> range(10) | + | >>> range(10) |
| − | [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | + | [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
</syntaxhighlight> | </syntaxhighlight> | ||
=== Agrandir une liste par une liste === | === Agrandir une liste par une liste === | ||
* Pour mettre bout à bout deux listes, utiliser la méthode extend | * Pour mettre bout à bout deux listes, utiliser la méthode extend | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> x = [1, 2, 3, 4] | + | >>> x = [1, 2, 3, 4] |
| − | >>> y = [4, 5, 1, 0] | + | >>> y = [4, 5, 1, 0] |
| − | >>> x.extend(y) | + | >>> x.extend(y) |
| − | >>> print x | + | >>> print x |
| − | [1, 2, 3, 4, 4, 5, 1, 0] | + | [1, 2, 3, 4, 4, 5, 1, 0] |
</syntaxhighlight> | </syntaxhighlight> | ||
=== Permutations === | === Permutations === | ||
* La permutation d'un ensemble d'éléments est une liste de tous les cas possibles. Si vous avez besoin de cette fonctionnalité, inutile de réinventer la roue, itertools s'en occupe pour vous. | * La permutation d'un ensemble d'éléments est une liste de tous les cas possibles. Si vous avez besoin de cette fonctionnalité, inutile de réinventer la roue, itertools s'en occupe pour vous. | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> from itertools import permutations | + | >>> from itertools import permutations |
| − | >>> list(permutations(['a', 'b', 'c'])) | + | >>> list(permutations(['a', 'b', 'c'])) |
| − | [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')] | + | [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')] |
</syntaxhighlight> | </syntaxhighlight> | ||
=== Permutation d'une liste de liste === | === Permutation d'une liste de liste === | ||
| Ligne 303 : | Ligne 303 : | ||
* Outil product de itertools : | * Outil product de itertools : | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> from itertools import product | + | >>> from itertools import product |
| − | >>> list(product(['a', 'b'], ['c', 'd'])) | + | >>> list(product(['a', 'b'], ['c', 'd'])) |
| − | [('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')] | + | [('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')] |
</syntaxhighlight> | </syntaxhighlight> | ||
| Ligne 311 : | Ligne 311 : | ||
* Afficher les 2 premiers éléments d'une liste | * Afficher les 2 premiers éléments d'une liste | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = [1,2,3,4,5] | + | >>> liste = [1,2,3,4,5] |
| − | >>> liste[:2] | + | >>> liste[:2] |
| − | [1, 2] | + | [1, 2] |
</syntaxhighlight> | </syntaxhighlight> | ||
* Afficher le dernier item d'une liste: | * Afficher le dernier item d'une liste: | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = [1, 2, 3, 4, 5, 6] | + | >>> liste = [1, 2, 3, 4, 5, 6] |
| − | >>> liste[-1] | + | >>> liste[-1] |
| − | 6 | + | 6 |
</syntaxhighlight> | </syntaxhighlight> | ||
* Afficher le 3ème élément en partant de la fin: | * Afficher le 3ème élément en partant de la fin: | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = [1, 2, 3, 4, 5, 6] | + | >>> liste = [1, 2, 3, 4, 5, 6] |
| − | >>> liste[-3] | + | >>> liste[-3] |
| − | 4 | + | 4 |
</syntaxhighlight> | </syntaxhighlight> | ||
* Afficher les 3 derniers éléments d'une liste: | * Afficher les 3 derniers éléments d'une liste: | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> liste = [1, 2, 3, 4, 5, 6] | + | >>> liste = [1, 2, 3, 4, 5, 6] |
| − | >>> liste[-3:] | + | >>> liste[-3:] |
| − | [4, 5, 6] | + | [4, 5, 6] |
</syntaxhighlight> | </syntaxhighlight> | ||
* Additionner deux listes pour les combiner ensemble en utilisant l'opérateur + : | * Additionner deux listes pour les combiner ensemble en utilisant l'opérateur + : | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> x = [1, 2, 3] | + | >>> x = [1, 2, 3] |
| − | >>> y = [4, 5, 6] | + | >>> y = [4, 5, 6] |
| − | >>> x + y | + | >>> x + y |
| − | [1, 2, 3, 4, 5, 6] | + | [1, 2, 3, 4, 5, 6] |
</syntaxhighlight> | </syntaxhighlight> | ||
* Mutiplier une liste: | * Mutiplier une liste: | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> x = [1, 2] | + | >>> x = [1, 2] |
| − | >>> x*5 | + | >>> x*5 |
| − | [1, 2, 1, 2, 1, 2, 1, 2, 1, 2] | + | [1, 2, 1, 2, 1, 2, 1, 2, 1, 2] |
</syntaxhighlight> | </syntaxhighlight> | ||
* Utile pour initialiser une liste: | * Utile pour initialiser une liste: | ||
<syntaxhighlight lang="python" line='line'> | <syntaxhighlight lang="python" line='line'> | ||
| − | >>> [0] * 5 | + | >>> [0] * 5 |
| − | [0, 0, 0, 0, 0] | + | [0, 0, 0, 0, 0] |
</syntaxhighlight> | </syntaxhighlight> | ||
== Les Tuples == | == Les Tuples == | ||
| − | + | * Un tuple est une liste qui ne peut plus être modifiée. | |
| − | Créer un tuple | + | === Créer un tuple === |
| + | * Pour créer un tuple, utiliser la syntaxe suivante: | ||
| + | <syntaxhighlight lang="python" line='line'> | ||
| + | >>> mon_tuple = () | ||
| + | </syntaxhighlight> | ||
| + | === Ajouter une valeur à un tuple === | ||
| + | * Pour créer un tuple avec des valeurs, on peut le faire de cette façon: | ||
| + | <syntaxhighlight lang="python" line='line'> | ||
| + | >>> mon_tuple = (1, "ok", "olivier") | ||
| + | </syntaxhighlight> | ||
| + | * Les parenthèses ne sont pas obligatoires mais facilite la lisibilité du code (rappelons que la force de python est sa simplicité de lecture): | ||
| + | <syntaxhighlight lang="python" line='line'> | ||
| + | >>> mon_tuple = 1, 2, 3 | ||
| + | >>> type(mon_tuple) | ||
| + | <type 'tuple'> | ||
| + | </syntaxhighlight> | ||
| − | + | * Lorsqu'on créé un tuple avec une seule valeur, ne pas oublier d'y ajouter une virgule, sinon ce n'est pas un tuple. | |
| + | <syntaxhighlight lang="python" line='line'> | ||
| + | >>> mon_tuple = ("ok") | ||
| + | >>> type(mon_tuple) | ||
| + | <type 'str'> | ||
| + | >>> mon_tuple = ("ok",) | ||
| + | >>> type(mon_tuple) | ||
| + | <type 'tuple'> | ||
| + | </syntaxhighlight> | ||
| − | >>> mon_tuple | + | === Afficher une valeur d'un tuple === |
| + | * Le tuple est une sorte de liste, on peut donc utiliser la même syntaxe pour lire les données du tuple. | ||
| + | <syntaxhighlight lang="python" line='line'> | ||
| + | >>> mon_tuple[0] | ||
| + | 1 | ||
| + | </syntaxhighlight> | ||
| − | + | * Et évidemment si on essaie de changer la valeur d'un index, l'interpreteur nous insulte copieusement: | |
| − | + | <syntaxhighlight lang="python" line='line'> | |
| − | + | >>> mon_tuple[1] = "ok" | |
| − | + | Traceback (most recent call last): | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | Et évidemment si on essaie de changer la valeur d'un index, l'interpreteur nous insulte copieusement: | ||
| − | |||
| − | >>> mon_tuple[1] = "ok" | ||
| − | Traceback (most recent call last): | ||
File "<stdin>", line 1, in <module> | File "<stdin>", line 1, in <module> | ||
| − | TypeError: 'tuple' object does not support item assignment | + | TypeError: 'tuple' object does not support item assignment |
| + | </syntaxhighlight> | ||
| − | A quoi sert un tuple alors? | + | === A quoi sert un tuple alors? === |
| − | Le tuple permet une affectation multiple: | + | * Le tuple permet une affectation multiple: |
| + | <syntaxhighlight lang="python" line='line'> | ||
| + | >>> v1, v2 = 11, 22 | ||
| + | >>> v1 | ||
| + | 11 | ||
| + | >>> v2 | ||
| + | 22 | ||
| + | </syntaxhighlight> | ||
| − | + | * Il permet également de renvoyer plusieurs valeurs lors d'un appel d'une fonction: | |
| − | + | <syntaxhighlight lang="python" line='line'> | |
| − | + | >>> def donne_moi_ton_nom(): | |
| − | + | ... return "olivier", "engel" | |
| − | + | ... | |
| − | + | >>> donne_moi_ton_nom() | |
| − | Il permet également de renvoyer plusieurs valeurs lors d'un appel d'une fonction: | + | ('olivier', 'engel') |
| − | + | </syntaxhighlight> | |
| − | >>> def donne_moi_ton_nom(): | ||
| − | ... return "olivier", "engel" | ||
| − | ... | ||
| − | >>> donne_moi_ton_nom() | ||
| − | ('olivier', 'engel') | ||
| − | On utilisera un tuple pour définir des sortes de constantes qui n'ont donc pas vocation à changer. | + | * On utilisera un tuple pour définir des sortes de constantes qui n'ont donc pas vocation à changer. |
== Fonctions et Méthodes == | == Fonctions et Méthodes == | ||
Version du 19 mars 2020 à 00:02
Array
Réferences: Doctor Python Pythonnerie sdz.tdct.org Python en ligne
Python
Les bases
|
Les variables par l'exemple
- Affectons une valeur à la variable age
1 >>> age = 30
2 >>> age
3 30
- On va ensuite ajouter 10 à la valeur de cette variable
1 >>> age = 30
2 >>> age = age + 10
3 >>> age
4 40
- Il est possible de mettre une variable dans une autre variable.
1 >>> age = 30
2 >>> age2 = age
3 >>> age2
4 30
- On peut mettre à peu près tout ce qu'on veut dans la variable, y compris du texte:
1 >>> age = "J'ai 30 ans"
2 >>> age
3 "J'ai 30 ans"
- Il est possible de concaténer, c'est à dire d'ajouter du texte à du texte:
1 >>> age = age + " et je suis encore jeune!"
2 >>> age
3 "J'ai 30 ans et je suis encore jeune!"
- On peut même multiplier une chaine de caractères.
1 >>> age = "jeune"
2 >>> age * 3
3 'jeunejeunejeune'
- Evidemment, si on essaie de faire des additions avec des variables qui sont des chiffres et d'autres qui sont du texte, l'interpréteur va hurler
1 >>> age = "J'ai 30 ans"
2 >>> age
3 "J'ai 30 ans"
4 >>> age + 1
5 Traceback (most recent call last):
6 File "<stdin>", line 1, in <module>
7 TypeError: cannot concatenate 'str' and 'int' objects
- On remarquera que l'interpréteur est sympa puisqu'il dit ce qui ne va pas: Il ne peut pas concaténer str et int .
Les listes
|
- Les listes (ou list / array ) en python sont une variable dans laquelle on peut mettre plusieurs variables.
Créer une liste en python
1 >>> liste = []
Voir le contenu de la liste en l'appelant
1 >>> liste
2 <type 'list'>
Ajouter une valeur à une liste python
1 >>> liste = [1,2,3]
2 >>> liste
3 [1, 2, 3]
Ajouter après la création de la liste avec la méthode append
1 >>> liste = []
2 >>> liste
3 []
4 >>> liste.append(1)
5 >>> liste
6 [1]
7 >>> liste.append("ok")
8 >>> liste
9 [1, 'ok']
- Il est possible de mélanger dans une même liste des variables de type différent. On peut d'ailleurs mettre une liste dans une liste.
Afficher un item d'une liste
1 >>> liste = ["a","d","m"]
2 >>> liste[0]
3 'a'
4 >>> liste[2]
5 'm'
Modifier une valeur avec son index
1 >>> liste = ["a","d","m"]
2 >>> liste[0]
3 'a'
4 >>> liste[2]
5 'm'
6 >>> liste[2] = "z"
7 >>> liste
8 ['a', 'd', 'z']
Supprimer une entrée avec un index
- Fonction del .
1 >>> liste = ["a", "b", "c"]
2 >>> del liste[1]
3 >>> liste
4 ['a', 'c']
Supprimer une entrée avec sa valeur
- Supprimer une entrée d'une liste avec sa valeur avec la méthode remove .
1 >>> liste = ["a", "b", "c"]
2 >>> liste.remove("a")
3 >>> liste
4 ['b', 'c']
Inverser les valeurs d'une liste
- Inverser les items d'une liste avec la méthode reverse .
1 >>> liste = ["a", "b", "c"]
2 >>> liste.reverse()
3 >>> liste
4 ['c', 'b', 'a']
Compter le nombre d'items d'une liste
Il est possible de compter le nombre d'items d'une liste avec la fonction len .
1 >>> liste = [1,2,3,5,10]
2 >>> len(liste)
3 5
Compter le nombre d'occurences d'une valeur
- Méthode count .
1 >>> liste = ["a","a","a","b","c","c"]
2 >>> liste.count("a")
3 3
4 >>> liste.count("c")
5 2
Trouver l'index d'une valeur
- méthode index.
1 >>> liste = ["a","a","a","b","c","c"]
2 >>> liste.index("b")
3 3
Manipuler une liste
1 >>> liste = [1, 10, 100, 250, 500]
2 >>> liste[0]
3 1
4 >>> liste[-1] # Cherche la dernière occurence
5 500
6 >>> liste[-4:] # Affiche les 4 dernières occurrences
7 [500, 250, 100, 10]
8 >>> liste[:] # Affiche toutes les occurences
9 [1, 10, 100, 250, 500]
10 >>> liste[2:4] = [69, 70]
11 [1, 10, 69, 70, 500]
12 >>> liste[:] = [] # vide la liste
13 []
Boucler sur une liste
- Pour afficher les valeurs d'une liste, on peut utiliser une boucle:
1 >>> liste = ["a","d","m"]
2 >>> for lettre in liste:
3 ... print lettre
4 ...
5 a
6 d
7 m
- Pour récupérer l'index, utiliser la fonction enumerate .
1 >>> for lettre in enumerate(liste):
2 ... print lettre
3 ...
4 (0, 'a')
5 (1, 'd')
6 (2, 'm')
Les valeurs retournées par la boucle sont des tuples.
Copier une liste
- Beaucoup de débutants font l'erreur de copier une liste de cette manière
1 >>> x = [1,2,3]
2 >>> y = x
- Or si on change une valeur de la liste y , la liste x sera elle aussi affectée par cette modification:
1 >>> x = [1,2,3]
2 >>> y = x
3 >>> y[0] = 4
4 >>> x
5 [4, 2, 3]
- En fait cette syntaxe permet de travailler sur un même élément nommé différemment
- Alors comment copier une liste qui sera indépendante?
1 >>> x = [1,2,3]
2 >>> y = x[:]
3 >>> y[0] = 9
4 >>> x
5 [1, 2, 3]
6 >>> y
7 [9, 2, 3]
- Pour des données plus complexes, utiliser la fonction deepcopy du module copy
1 >>> import copy
2 >>> x = [[1,2], 2]
3 >>> y = copy.deepcopy(x)
4 >>> y[1] = [1,2,3]
5 >>> x
6 [[1, 2], 2]
7 >>> y
8 [[1, 2], [1, 2, 3]]
Transformer une string en liste
- Transformer une chaine de caractère en liste. Méthode split .
1 >>> ma_chaine = "Olivier:ENGEL:Strasbourg"
2 >>> ma_chaine.split(":")
3 ['Olivier', 'ENGEL', 'Strasbourg']
Transformer une liste en string
- Méthode " join ".
1 >>> liste = ["Olivier","ENGEL","Strasbourg"]
2 >>> ":".join(liste)
3 'Olivier:ENGEL:Strasbourg'
Trouver un item dans une liste
- Pour savoir si un élément est dans une liste, utiliser le mot clé in de cette manière:
1 >>> liste = [1,2,3,5,10]
2 >>> 3 in liste
3 True
4 >>> 11 in liste
5 False
La fonction range
- La fonction range génère une liste composée d'une simple suite arithmétique.
1 >>> range(10)
2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Agrandir une liste par une liste
- Pour mettre bout à bout deux listes, utiliser la méthode extend
1 >>> x = [1, 2, 3, 4]
2 >>> y = [4, 5, 1, 0]
3 >>> x.extend(y)
4 >>> print x
5 [1, 2, 3, 4, 4, 5, 1, 0]
Permutations
- La permutation d'un ensemble d'éléments est une liste de tous les cas possibles. Si vous avez besoin de cette fonctionnalité, inutile de réinventer la roue, itertools s'en occupe pour vous.
1 >>> from itertools import permutations
2 >>> list(permutations(['a', 'b', 'c']))
3 [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
Permutation d'une liste de liste
- Afficher tous les cas possibles d'une liste elle-même composée de liste?
- Outil product de itertools :
1 >>> from itertools import product
2 >>> list(product(['a', 'b'], ['c', 'd']))
3 [('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]
Astuces
- Afficher les 2 premiers éléments d'une liste
1 >>> liste = [1,2,3,4,5]
2 >>> liste[:2]
3 [1, 2]
- Afficher le dernier item d'une liste:
1 >>> liste = [1, 2, 3, 4, 5, 6]
2 >>> liste[-1]
3 6
- Afficher le 3ème élément en partant de la fin:
1 >>> liste = [1, 2, 3, 4, 5, 6]
2 >>> liste[-3]
3 4
- Afficher les 3 derniers éléments d'une liste:
1 >>> liste = [1, 2, 3, 4, 5, 6]
2 >>> liste[-3:]
3 [4, 5, 6]
- Additionner deux listes pour les combiner ensemble en utilisant l'opérateur + :
1 >>> x = [1, 2, 3]
2 >>> y = [4, 5, 6]
3 >>> x + y
4 [1, 2, 3, 4, 5, 6]
- Mutiplier une liste:
1 >>> x = [1, 2]
2 >>> x*5
3 [1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
- Utile pour initialiser une liste:
1 >>> [0] * 5
2 [0, 0, 0, 0, 0]
Les Tuples
- Un tuple est une liste qui ne peut plus être modifiée.
Créer un tuple
- Pour créer un tuple, utiliser la syntaxe suivante:
1 >>> mon_tuple = ()
Ajouter une valeur à un tuple
- Pour créer un tuple avec des valeurs, on peut le faire de cette façon:
1 >>> mon_tuple = (1, "ok", "olivier")
- Les parenthèses ne sont pas obligatoires mais facilite la lisibilité du code (rappelons que la force de python est sa simplicité de lecture):
1 >>> mon_tuple = 1, 2, 3
2 >>> type(mon_tuple)
3 <type 'tuple'>
- Lorsqu'on créé un tuple avec une seule valeur, ne pas oublier d'y ajouter une virgule, sinon ce n'est pas un tuple.
1 >>> mon_tuple = ("ok")
2 >>> type(mon_tuple)
3 <type 'str'>
4 >>> mon_tuple = ("ok",)
5 >>> type(mon_tuple)
6 <type 'tuple'>
Afficher une valeur d'un tuple
- Le tuple est une sorte de liste, on peut donc utiliser la même syntaxe pour lire les données du tuple.
1 >>> mon_tuple[0]
2 1
- Et évidemment si on essaie de changer la valeur d'un index, l'interpreteur nous insulte copieusement:
1 >>> mon_tuple[1] = "ok"
2 Traceback (most recent call last):
3 File "<stdin>", line 1, in <module>
4 TypeError: 'tuple' object does not support item assignment
A quoi sert un tuple alors?
- Le tuple permet une affectation multiple:
1 >>> v1, v2 = 11, 22
2 >>> v1
3 11
4 >>> v2
5 22
- Il permet également de renvoyer plusieurs valeurs lors d'un appel d'une fonction:
1 >>> def donne_moi_ton_nom():
2 ... return "olivier", "engel"
3 ...
4 >>> donne_moi_ton_nom()
5 ('olivier', 'engel')
- On utilisera un tuple pour définir des sortes de constantes qui n'ont donc pas vocation à changer.
Fonctions et Méthodes
| Les fonctions: [ fonction(paramètres) ]
len(), str(), range() Les méthodes: [ variable.méthode(paramètres) ]
|