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>
  
* Récupérer l'index, vous pouvez utiliser la fonction enumerate .
+
* 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 vous changez une valeur de la liste y , la liste x sera elle aussi affectée par cette modification:
+
* 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.
+
* 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>
  
Pour créer un tuple , vous pouvez utiliser la syntaxe suivante:
+
* 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>
  
Ajouter une valeur à un tuple
+
* Et évidemment si on essaie de changer la valeur d'un index, l'interpreteur nous insulte copieusement:
 
+
<syntaxhighlight lang="python" line='line'>
Pour créer un tuple avec des valeurs, vous pouvez le faire de cette façon:
+
>>> mon_tuple[1] = "ok"
 
+
Traceback (most recent call last):
>>> 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):
 
 
 
>>> mon_tuple = 1, 2, 3
 
>>> type(mon_tuple)
 
<type 'tuple'>
 
 
 
Lorsque vous créez un tuple avec une seule valeur, n'oubliez pas d'y ajouter une virgule, sinon ce n'est pas un tuple.
 
 
 
>>> mon_tuple = ("ok")
 
>>> type(mon_tuple)
 
<type 'str'>
 
>>> mon_tuple = ("ok",)
 
>>> type(mon_tuple)
 
<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.
 
 
 
>>> mon_tuple[0]
 
1
 
 
 
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>
  
>>> v1, v2 = 11, 22
+
* Il permet également de renvoyer plusieurs valeurs lors d'un appel d'une fonction:
>>> v1
+
<syntaxhighlight lang="python" line='line'>
11
+
>>> def donne_moi_ton_nom():
>>> v2
+
...    return "olivier", "engel"
22
+
...  
 
+
>>> 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

test


(Opérateurs:Magenta)
(Méthodes:Green)
(Fonctions:Red)

Accueil
Connexion
Déconnexion
Aide
Admin
Ft.png
PYTHON programmation objet

Python

Les bases

  • Affectation des variables
  • Fonctions informatiques
  • Entrées/Affichage <raw_input>
  • <print> <int> <float> <str>
  • Ecrire un programme avec IDLE
  • Codage des caractères UTF8

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

  • listes []
  • Modification des listes
  • Affichage d'une liste
  • boucle for avec une liste
  • 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) ]

  • les méthodes peuvent ne pas retourner de résultat
  • Méthode de texte:
    • upper
    • lower
    • capitalize
    • title
    • strip
    • split
  • Il est possible d'accumuler les méthodes