Maison >développement back-end >Tutoriel Python >Python - Supprimer la sous-liste qui existe dans une autre sous-liste
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.
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
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]]
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 :
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 :
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
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]]
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.
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.
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)]
Le résultat du code ci-dessus est le suivant :
[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Toutes les sous-listes supplémentaires sont supprimées, nous avons donc écrit le code correct pour supprimer toutes les sous-listes supplémentaires.
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 :
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)
Le résultat du code ci-dessus est le suivant :
[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
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.
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 :
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)
Le résultat du code ci-dessus est le suivant :
[[Aayush, Shyam, John], [Henry, Joe], [David, Stefen, Damon]]
Toutes les sous-listes présentes dans d'autres sous-listes ont été supprimées.
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!