CodeGym /Cours Java /Python SELF FR /Travail pratique avec des listes

Travail pratique avec des listes

Python SELF FR
Niveau 7 , Leçon 9
Disponible

9.1 Création d'une copie de liste

Créer une copie d'une liste en Python est une tâche importante qui peut être nécessaire pour éviter des modifications inattendues des données lors de la manipulation des listes. Lorsqu'on travaille avec des listes, il est important de comprendre la différence entre la copie superficielle (shallow) et la copie profonde (deep).

Copie superficielle

Une copie superficielle crée une nouvelle liste, mais les éléments restent les mêmes (si les éléments sont des références, elles sont copiées en tant que références). Cela peut être fait de plusieurs façons :

Avec la fonction list() :


original = [1, 2, 3]
copy = list(original)

Utilisation des tranches :


original = [1, 2, 3]
copy = original[:]

Méthode copy() :

Copie profonde

Une copie profonde crée une nouvelle liste, dans laquelle sont créées également des copies de tous les objets imbriqués. C'est particulièrement important lorsque les listes contiennent d'autres types de données modifiables, comme d'autres listes. Pour cela, on utilise le module copy :


import copy
original = [[1, 2], [3, 4]]
deep_copy = copy.deepcopy(original)

Quand utiliser chaque méthode

La copie superficielle est plus rapide et convient lorsque les éléments de la liste sont simples ou ne nécessitent pas de duplication (par exemple, des chaînes ou des nombres). La copie profonde est nécessaire lorsque les éléments de la liste sont eux-mêmes des collections modifiables ou lorsque les modifications de la copie ne doivent pas se refléter sur l'original.

9.2 Suppression d'un élément de la liste

Il y a cette tâche simple et complexe à la fois : supprimer un ou plusieurs éléments d'une liste dans une boucle.

Lorsque nous parcourons une liste à l'aide d'une boucle for, la liste renvoie un objet enfant spécial — un itérateur, qui est utilisé par la boucle for pour parcourir tous ses éléments. Et si dans le processus d'utilisation de l'itérateur [par la boucle for] un élément est supprimé de la liste, l'itérateur peut ne pas fonctionner correctement.

Si vous avez supprimé le 3ème élément, alors le 4ème deviendra automatiquement le 3ème. Cependant, la boucle for, via l'itérateur, passera au nouveau 4ème élément, qui était précédemment le 5ème. Donc, le 4ème élément sera sauté.

Voici quelques méthodes pour supprimer des éléments en toute sécurité :

Utilisation de la méthode remove()

Si vous savez exactement quel élément doit être supprimé, vous pouvez utiliser remove() dans la boucle. Cependant, cela peut être inefficace si les éléments sont nombreux, car chaque appel à remove() recherche l'élément avant de le supprimer, ce qui ralentit l'exécution.

Créer une nouvelle liste

Une méthode plus sûre consiste à créer une nouvelle liste avec uniquement les éléments à conserver :


original_list = [1, 2, 3, 4, 5, 6]
new_list = [x for x in original_list if x % 2 != 0]  # garder uniquement les nombres impairs

Utilisation des indices

Vous pouvez utiliser une boucle for avec un indice inversé pour supprimer les éléments sans risque de saut :


for i in range(len(original_list) - 1, -1, -1):
    if original_list[i] % 2 == 0:  # condition pour suppression
        del original_list[i]

Lorsque nous parcourons la liste à l'envers, lors de la suppression d'éléments, seuls les indices des éléments déjà parcourus changent.

Utilisation d'une copie de la liste :

Supposons que vous souhaitiez supprimer tous les nombres négatifs de la liste :


numbers = [1, -1, 2, -2, 3, -3]
# Créer une copie de la liste pour une itération sûre
for number in numbers.copy():
    if number < 0:
        numbers.remove(number)
print(numbers) # Affichera [1, 2, 3]

9.3 Fusion de listes

Très souvent, il est nécessaire de combiner deux ou plusieurs listes en une seule. Cela peut être fait de plusieurs manières, chacune adaptée à différentes tâches et ayant ses propres caractéristiques.

Utilisation de l'opérateur +

La méthode la plus simple pour fusionner deux listes est d'utiliser l'opérateur +. C'est une méthode directe et intuitive :


list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
print(combined_list)  # Affichera [1, 2, 3, 4, 5, 6]

Méthode extend()

La méthode extend() modifie la première liste en ajoutant à sa fin tous les éléments de la seconde liste. Cela modifie la liste d'origine :


list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # Affichera [1, 2, 3, 4, 5, 6]

Compréhension de liste (List Comprehensions)

Les compréhensions de liste peuvent être utilisées pour créer de nouvelles listes en combinant des éléments de plusieurs listes en une liste complexe :


list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = [item for sublist in [list1, list2] for item in sublist]
print(combined_list)  # Affichera [1, 2, 3, 4, 5, 6]

Méthode append()

Vous pouvez ajouter tous les éléments du 2ème liste au 1ère un par un. Bah, comme une option.


list1 = [1, 2, 3]
list2 = [4, 5, 6]
for x in list2:
    list1.append(x)
print(list1)  # Affichera [1, 2, 3, 4, 5, 6]

En gros, c'est tout ce que je voulais te raconter sur les listes 😊

1
Опрос
Listes en Python,  7 уровень,  9 лекция
недоступен
Listes en Python
Listes en Python
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION