0
votes

Supprimer les éléments de la liste s'il existe

Mon code ne supprimera pas les éléments si elles existent dans la liste.

Ceci est la liste que je travaille avec: [1, 2, 3, 4, 5, 6, 7, 8] < / Code>

exécutez la fonction: supprimer_items_from_list (my_list, [1,5,6])

Ceci est la sortie que j'attends: [2, 3, 4, 7, 8]

mais je reçois: [1, 2, 3, 4, 5, 6, 7, 8] xxx

Voici mes instructions: Cette fonction prend deux arguments: une liste et une liste de numéros à supprimer de la liste. Cette fonction vérifiera ensuite si ces éléments existent dans cette liste et s'ils existent, ils seront supprimés.


3 commentaires

Est commandé_list vraiment commandé?


Regardez votre code. Vous vérifiez si [[1,5,6]] existe dans [1, 2, 3, 4, 5, 6, 7, 8] - cela ne peut pas fonctionner .


non, il n'est pas vraiment commandé mais c'est ce que l'argument doit être appelé


3 Réponses :


1
votes

Si [éléments] dans la liste vérifie: une liste contenant la liste des éléments est un élément de la liste. C'est-à-dire que vous demandez: est [[1, 2, 3]] membre de la liste? Probablement pas.

Ce que vous voulez faire est d'itérer sur l'élément de items_to_remove et faites ce que vous avez fait xxx


0 commentaires

1
votes

Essayez ceci:

def remove_items_from_list(ordered_list, items_to_remove):
    return [i for i in ordered_list if not i in items_to_remove]


1 commentaires

Votre fonction n'est pas ce qui a été posé et ne signifie pas ce qu'il décrit dans le nom de la fonction. Il ne manipule pas une liste, il renvoie une nouvelle liste.



0
votes

La réponse bleue fournie est correcte, mais une approche plus idiomatique serait de le faire avec une compréhension de la liste, comme: xxx

Notez que cela ne supprimera pas les éléments de l'original. Liste, mais renvoyer une nouvelle liste sans les éléments (comme indiqué par Bastian).

Modifier: Arkistarvh kltzuonste m'a battue, mais je dirais toujours que x pas dans y est plus idiomatique que pas x en y .


4 commentaires

Ce n'est pas la même chose ... La question était de supprimer des éléments d'une liste, mais vous renvoyez une nouvelle liste. Selon l'endroit où il est utilisé, cela pourrait casser du code.


Considérant que l'OP a présenté une fonction qui prend une liste, supprime les articles de celui-ci et renvoie la même liste, je suppose que c'est ce qu'il veut réellement. S'il est important que les éléments soient supprimés de la liste initiale, la fonction ne doit pas avoir de valeur de retour (par souci de clarté).


Votre point est toujours valable, cependant, j'ai donc clarifié ma réponse.


Veuillez lire ce qu'il a écrit dans ses instructions, ne présumez pas à partir de son code de travail non ... Les instructions indiquent clairement que les éléments doivent être supprimés de la liste.