0
votes

Comment mettre à jour les modifications apportées à une liste faite dans une fonction récursive dans Python?

Fondamentalement, ce que je veux faire, c'est de mettre à jour les modifications apportées à l'intérieur d'un appel récursif vers ma liste principale. J'ai essayé ci-dessous, mais cela crée une nouvelle liste à chaque fois et que vous oubliez la liste des maternelles, renvoyant plutôt une nouvelle liste d'enfants. Lemmi Expliquez avec un code de base:

def woah(arr):
    if len(arr) > 1:
        arr[-1], arr[0] = arr[0], arr[-1]
        print(arr) //to keep track of changes
        return woah(arr[:-1])

woah([2, 3, 4, 5, 6])

>> [6, 3, 4, 5, 2]
   [5, 3, 4, 6]
   [4, 3, 5]
   [3, 4]


2 commentaires

D'où vient-il?


@ipaleka j'ai raté ça. Merci, j'ai mis à jour la question maintenant.


3 Réponses :


1
votes

Un peu de changement:

def woah(arr, l):
    if l > 1:
        arr[l-1], arr[0] = arr[0], arr[l-1]
        print(arr) # to keep track of changes
        return woah(arr, l-1)

    return arr

arr = [2, 3 ,4, 5 , 6]
woah(arr, len(arr)) # arr will be changed, and you can also accept the return value


0 commentaires

1
votes

Depuis que vous passez une liste plus courte à chaque fois, la liste devient plus courte et plus courte. Ce shoud fonctionne: xxx


0 commentaires

1
votes

Lorsque vous faites Retour Woah (Arr [: - 1]) , vous laissez le dernier élément et ce n'est pas ce que vous voulez. Essayez quelque chose comme ceci xxx

sortie xxx


0 commentaires