Python - Supprimer la sous-liste qui existe dans une autre sous-liste

王林
Libérer: 2023-09-18 18:53:08
avant
973 Les gens l'ont consulté

Python - 删除在另一个子列表中存在的子列表

Python est un logiciel largement utilisé qui a de nombreux objectifs différents et plusieurs fonctions pour effectuer différentes tâches. Une fonctionnalité utile de Python est la fonctionnalité de liste qui aide à collecter et à stocker différentes données, mais les utilisateurs rencontrent souvent des problèmes lors de la suppression d'une sous-liste qui existe déjà dans une autre sous-liste. Ainsi, dans cet article, nous apprendrons comment supprimer différentes sous-listes qui existent déjà dans d'autres sous-listes.

Pour bien comprendre le problème, prenons un exemple où l'on doit supprimer une sous-liste dont les données existent déjà dans une autre sous-liste.

Exemple

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]
#All the sublist whose data is already present in other sublist are to be removed
Copier après la connexion

Sortie

Les sous-listes nommées [Shyam,John] et [David,Stefan] ont déjà les mêmes données dans d'autres sous-listes, donc ces sous-listes supplémentaires seront supprimées. Le résultat devrait ressembler à ceci :

new_list = [[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Copier après la connexion

Nous allons maintenant découvrir les différentes manières de supprimer une sous-liste qui existe déjà dans une sous-liste.

Nous avons mentionné ici différentes méthodes possibles :

Compréhension de la liste

Le moyen le plus simple de supprimer toutes les sous-listes présentes dans d'autres sous-listes est d'utiliser la compréhension de liste. Vérifiez toutes les sous-listes qui existent dans la liste et copiez celles qui n'existent dans aucune autre sous-liste dans la nouvelle liste. Prenons un exemple pour mieux comprendre :

Exemple

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]
New_list = [sublist for sublist in duplicate_list if not any(set(sublist) <= set(other) for other in duplicate_list if sublist is not other)]
#We first check all the lists of the duplicate list through the any() function and then we check for any repeatation with the help of <= operator
Copier après la connexion

Sortie

Une fois le code terminé, nous imprimerons la sortie du code ci-dessus. Le résultat du code ci-dessus est le suivant :

[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Toutes les sous-listes supplémentaires ont été supprimées, nous avons donc écrit le code correct pour supprimer les sous-listes qui figuraient déjà dans la sous-liste.

Définir les fonctions

Une autre façon de résoudre le problème consiste à créer une toute nouvelle fonction distincte qui filtre toutes les sous-listes qui existent dans d'autres sous-listes. Cela peut être fait en définissant une condition pour la fonction et en la faisant s'exécuter en conséquence.

Exemple

def is_sublist(sublist, other):  #is_sublist is the function defined
    return set(sublist) <= set(other)  #the functions checks 2 sublists at a time and if the sublist already exists then it returns with `true` feedback and does not consider the extra sublist

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]
new_list = [sublist for sublist in duplicate_list if not any(is_sublist(sublist, other) for other in duplicate_list if sublist is not other)]
Copier après la connexion

Sortie

Le résultat du code ci-dessus est le suivant :

[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Toutes les sous-listes supplémentaires sont supprimées, nous avons donc écrit le code correct pour supprimer toutes les sous-listes supplémentaires.

Comparez chaque liste

Il s'agit d'une méthode très complexe pour supprimer une sous-liste qui existe déjà dans une autre sous-liste. Dans cette méthode, toutes les sous-listes sont comparées les unes aux autres et les sous-listes non dupliquées sont copiées dans une nouvelle liste. Nous pouvons comprendre cela à l'aide de l'exemple suivant :

Exemple

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]
#A copy of duplicate list is created to avoid any errors in the original file
new_list = duplicate_list[:]

#Check each sublist present in the new_list
for sublist in duplicate_list:
    for other in new_list:
        # Checking of presence of sublist present in other sublist is done
        if sublist != other and set(sublist).issubset(other):   #issubset is used to check presence of one sublist in another sublist
            # Remove all the repeating sublist
            new_list.remove(sublist)
            break  #break is used to stop the loop so that it does not keep checking continuosly

print(new_list)
Copier après la connexion

Sortie

Le résultat du code ci-dessus est le suivant :

[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette méthode est plus adaptée lorsque la liste est trop longue et contient un grand nombre de sous-listes avec de nombreux éléments.

Mettre en place les opérations

Dans cette opération, les sous-listes existant dans d'autres sous-listes sont supprimées à l'aide de l'opération set. Dans cette approche, nous pouvons convertir chaque sous-liste de la liste en un ensemble et, à l'aide de différentes opérations, nous pouvons supprimer toutes les sous-listes présentes dans d'autres sous-listes. On peut le comprendre plus clairement à travers l'exemple suivant :

Exemple

duplicate_list = [[Aayush, Shyam, John], [Shyam, John], [Henry, Joe], [David, Stefen, Damon], [David, Stefen]]

new_list = []

for sublist in duplicate_list:
    is_subset = False
    for other in duplicate_list:
        if sublist != other and set(sublist).difference(set(other)) == set():  #The difference operation is used to calculate the difference betwen two sets
            is_subset = True  #When the sublist is present in another sublist the result of is_subset will be true 
            break  #Once the result is found to be true, the loop is broke and all the other sublist are copied into the new_list
    if not is_subset:
        new_list.append(sublist)

print(new_list)
Copier après la connexion

Sortie

Le résultat du code ci-dessus est le suivant :

[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Toutes les sous-listes présentes dans d'autres sous-listes ont été supprimées.

Conclusion

Le problème de la suppression d'une sous-liste qui existe déjà dans une autre sous-liste est un problème auquel les utilisateurs sont souvent confrontés, et cela entraîne souvent une perte de temps considérable pour les utilisateurs. Par conséquent, il est possible de supprimer rapidement toutes les sous-listes qui existent au sein d’une autre sous-liste en utilisant différentes méthodes suggérées dans l’article précédent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!