0
votes

Creusez via une liste avec la liste à l'aide d'une fonction pour la fonction

Dans une fonction que je fais, j'ai un pour x dans la plage (y) la boucle qui créera une liste avec x de la profondeur de la liste.

Par exemple, à x = 1 , il créera [[[A, B], [A, B]] et à x = 2 , il créera [[[[[[[[[[A], [A, B]], [[A, B], [A, B]]]

Je veux pouvoir regarder chaque élément (chacun A et B), par exemple avec x = 1 faire: xxx

mais Cela m'est difficile de comprendre car à chaque valeur X, je devrais modifier le nombre de déclarations. Existe-t-il un moyen de modifier le nombre de déclarations pour ma liste sur la base de la modification du numéro X, puisque x est proportionnelle linéairement au nombre de déclarations dont j'ai besoin?


2 commentaires

Utilisez une fonction récursive. Fondamentalement, vous recherchez Traversal d'arbre


Veuillez ajouter une entrée et une sortie souhaitées (pas en mots mais avec des données réelles). Votre question est confuse et ce sera beaucoup plus facile d'aider si vous nous montrez ce que vous voulez.


3 Réponses :


1
votes

Vous pouvez utiliser une seule expression d'argumentation en cours d'appel à appeler et survolez votre iTHEREFER:

def wrap_iter(x):
    return [x]

# then a function to recursively call f
def nums(f, x, rep):
    while rep:
        x = f(x)
        rep-=1
    return x

a = [[1,2], [1,2]]

nums(wrap_iter, a, 1)
[[[1, 2], [1, 2]]]

nums(wrap_iter, a, 0)
[[1, 2], [1, 2]]



0 commentaires

1
votes

Y a-t-il un moyen de modifier le nombre de déclarations ...

non. Au lieu de cela, vous devez créer une fonction récursive, c'est-à-dire une fonction qui s'appelle à nouveau pour un problème plus faible jusqu'à ce qu'il frappe une sorte de "cas de base".

Vous semblez rechercher une sorte de Traversal de l'arbre fonction; quelque chose comme ceci: xxx


0 commentaires

1
votes

comme alternative à une fonction récursive, vous pouvez également traverser la structure de garder votre propre pile: xxx


0 commentaires