Python : Manipulation des listes
Le cours accéléré Python est gratuit et sera publié ici sur dev.to. Je publierai un nouvel article tous les deux jours environ. Pour ne rien manquer, vous pouvez me suivre sur twitter : Suivez @EricLeCodeur
Type de variable : List et Tuple
Les listes permettent de stocker plusieurs items dans une seule variable.
En Python le type de cette variable est “List”. Je vais utiliser ce terme tout au long de cette section
Il arrive souvent que vous deviez stocker plusieurs informations de même nature dans plusieurs variables. Voici un exemple :
user1 = "Mike"
user2 = "Paul"
user3 = "John"
user4 = "Peter"
Quoique fonctionnel ce code n’est pas du tout efficace et sera extrêmement difficile à créer, manipuler et maintenir.
C’est pourquoi Python met à notre disposition un type de variable appelé “List”.
Les “List” permettent de stocker les informations de même nature.
Créer une variable List
Pour créer une "List" vide il suffit d’utiliser les crochets []. Python va automatiquement créer une variable de type "List"
users = []
Il est possible d’assigner des valeurs à la "List" lors de sa création :
users = ["Mike", "Paul", "John", "Peter"]
Chaque valeur est séparée par une virgule.
Une "List" peut contenir des variables de différent type.
user_info = ["Mike", 32, True]
# Str, Int, Bool
Ajouter et supprimer un item
Une fois la variable de type List créé, il est possible d’ajouter un item avec la fonction append()
users.append("Martin")
# ["Mike", "Paul", "John", "Peter", "Martin"]
Il est possible d’enlever un item avec l’instruction “del”
users = ["Mike", "Paul", "John", "Peter"]
del users[1]
print(users)
# ['Mike', 'John', 'Peter']
Nombre d’items dans une List
La fonction “len()” permet de savoir combien d’items il y a dans une List
users = ["Mike", "Paul", "John", "Peter"]
nb_user = len(users)
print(nb_user)
# 4
Récupérer et modifier un item en particulier
Comme pour une variable de type String, un élément de votre variable List peut être accessible via son numéro de position.
users = ["Mike", "Paul", "John", "Peter"]
0 1 2 3
print(users[2])
# John
Un item de la List peut également être modifié grâce à son numéro de position
users = ["Mike", "Paul", "John", "Peter"]
users[0] = "Sunny"
print(users[0])
# Sunny
Le numéro de position -1 permet de récupérer le dernier item d’une List
print(users[-1])
# Peter
Récupérer seulement une partie d’une List
Voici la syntaxe qui permet de récupérer une partie d’une List
list[debut:fin]
Voici un exemple
users = ["Mike", "Paul", "John", "Peter"]
# 0 1 2 3
some_users = users[1:3]
print(some_users)
# ["Paul", "John"]
Dans cet exemple, la List “users” retournera la position 1 à 3. Pour rappel, la première position est zéro et la position de fin n’est jamais incluse dans le résultat.
Si la position de début n’est pas spécifiée, Python utilisera la position zéro.
Si la position de fin n’est pas spécifié, Python utilisera la dernière position
users = ["Mike", "Paul", "John", "Peter"]
# 0 1 2 3
first_users = users[:3]
print(first_users)
# ["Mike", "Paul", "John"]
last_users = users[2:]
print(last_users)
# ["John", "Peter"]
Récupérer toute la List
Il est possible de récupérer une List dans son entièreté et du coup effectuer une copie. Voici la syntaxe
users = ["Mike", "Paul", "John", "Peter"]
copy_users = users[:]
print(copy_users)
# ["Mike", "Paul", "John", "Peter"]
Créer une List à partir d’une String
La fonction split() permet de créer une variable List à partir d’une variable String.
colors = "red, green, blue".split()
print(colors)
# ['red', 'green', 'blue']
Par défaut, la fonction split() utilise la virgule “,” comme caractère séparateur
Voici un autre exemple avec un autre séparateur :
colors = "red - green - blue".split(" - ")
print(colors)
# ['red', 'green', 'blue']
Joindre deux variables List
Il est possible d’unir deux List en une seule grande List
colors1 = ['red', 'blue']
colors2 = ['green', 'yellow']
colors3 = colors1 + colors2
print(colors3)
# ['red', 'blue', 'green', 'yellow']
Tuples
Les Tuples sont un type de variable en Python. Ce type de variable est très semblable au type List mais avec quelques différences :
- Une fois assigné, un Tuple ne peut être modifié (lecture seulement)
- La performance des Tuples est légèrement supérieure au List
- Un Tuple utilise les parenthèses () à la place des crochets []
Voici un exemple de List vs Tuple
# List
colors = ["red", "green", "blue"]
# Tuple
colors = ("red", "green", "blue")
Par convention, si votre liste de données est fixe et en lecture seulement alors mieux vaut la placer dans un Tuple. Sinon, une variable de type "List" fera l’affaire.
Faire une boucle dans une List
Il est possible de lire chaque item d’une "List" et d’exécuter du code. Pour ce faire il faut utiliser l’instruction “for”
items = ["iPhone", "iPad", "iWatch"]
for item in items:
print(item)
# iPhone
# iPad
# iWatch
La syntaxe de la boucle est relativement simple “for item in items:” pourrait se traduire avec : Pour chaque “item” dans ma List “items” exécuter le bloc de code qui suit les “:”
”item” Le nom de cette variable pourrait être n’importe quoi. C’est juste une référence pour rendre la lecture du code plus simple. Voici un exemple avec un autre nom.
for product in items:
print(product)
Nom différent mais même résultat.
Il est également possible d’obtenir un index qui représente la position de l’item dans la "List". Pour ce faire vous devez utiliser la fonction enumerate()
items = ["iPhone", "iPad", "iWatch"]
for index, item in enumerate(items):
print(index, item)
# 0 iPhone
# 1 iPad
# 2 iWatch
La fonction enumerate() retourne deux valeurs soit l’index et l’item en tant que tel.
Boucle avec une seule ligne de code
Il existe une syntaxe propre à Python qui permet de faire cela : List Comprehension
Voici un exemple de List Comprehension
items = ["iPhone", "iPad", "iWatch"]
print_items = [print(item) for item in items]
List Comprehension avec une condition
items = ["iPhone", "", "iPad", "iWatch"]
items = ["iPhone", "", "iPad", "iWatch"]
print_items = [print(item) for item in items if item == "iPhone"]
Conclusion
C'est tout pour aujourd'hui, je publierai un nouvel article tous les deux jours environ. Pour être sûr de ne rien rater vous pouvez me suivre sur twitter : Suivre @EricLeCodeur