Python : Manipulation des listes

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 :

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 :