Voici le code que j'ai jusqu'à présent:

def remove(lst: list, pos: int):
    pass

def test_remove():
    lst = ['Turkey', 
       'Stuffing',
       'Cranberry sauce',
       'Green bean casserole',
       'Sweet potato crunch',
       'Pumpkin pie']

remove(lst, 2)

assert lst == ['Turkey', 
       'Stuffing',
       'Green bean casserole',
       'Sweet potato crunch',
       'Pumpkin pie',
       None]

lst = [5, 10, 15]
remove(lst, 0)
assert lst == [10, 15, None]

lst = [5]
remove(lst, 0)
assert lst == [None]

if __name__ == "__main__":
    test_remove()

Écrivez le code dans remove () pour supprimer l'élément dans la position de l'emplacement, en déplaçant les éléments au-delà pour combler l'écart et en laissant la valeur None dans le dernier emplacement.

Des idées sur où je devrais commencer?

0
user9486126 11 avril 2018 à 19:49

3 réponses

Meilleure réponse

Écrivez le code dans remove () pour supprimer l'élément dans la position de l'emplacement, en déplaçant les éléments au-delà pour combler l'écart et en laissant la valeur None dans le dernier emplacement.

Vous pouvez utiliser la méthode pop de list pour supprimer l'élément, puis ajouter None à la liste.

def remove(lst: list, pos: int):
    lst.pop(pos)
    lst.append(None)
1
R Sahu 11 avril 2018 à 16:57

Étant donné une liste lst, la méthode pop(i) supprime l'élément du i ème index de lst.

def remove(lst: list, pos: int):
    lst.pop(pos)

J'ai également remarqué lors de votre test, vous vous attendez à ce que lorsque vous supprimez un élément, None soit ajouté à la fin de la liste. Ce n'est pas le cas. None ne devrait pas être un élément dans la liste de chaînes, et si vous supprimez un élément de la liste, cet élément disparaît mais les autres éléments restent les mêmes et rien d'autre n'est ajouté.

Si vous voulez le faire, ajoutez simplement lst.append(None) à la dernière ligne de la fonction remove().

1
galfisher 11 avril 2018 à 17:00

En utilisant simplement des concepts de base, nous pouvons utiliser une boucle for:

def remove(lst: list, pos: int):
   for i in range(pos, len(lst)-1):
       lst[i] = lst[i+1]
   lst[-1] = None
   return lst

Et un test:

remove([1,2,3,4,5,6], 2)
#[1, 2, 4, 5, 6, None]

Notez qu'il est plus clair d'utiliser simplement les méthodes intégrées comme @galfisher et @R Sahu le décrivent.

0
Joe Iddon 11 avril 2018 à 17:02