0
votes

Inverser une liste imbriquée en python

Bonjour J'essaie de convertir des listes imbriquées dans l'ordre inverse.

Voici mon code: p>

def reverse_(items):
     items =  items[::-1]
        new_l = []
        for item in items:
            if type(item) == list:
                item.reverse()
                new_l.append(item)
            else:
                new_l.append(item)
        return new_l


9 commentaires

Est-ce que ceci Comment inverser une liste de python imbriquée


@ Juanpa.arrivillaga Il corrige, pouvez-vous s'il vous plaît le poster comme réponse afin que je puisse accepter :) Merci beaucoup pour votre aide les gars oui je vérifiais ces liens mais Juanpa résout mon problème


@Darrylg n'est-il pas seulement à propos de l'inversion de la liste ultérieure?


@ Superbrain - Le programme lié est récursif pour fonctionner sur des listes imbriquées et fournit la sortie demandée.


@Darrylg hmm, je suppose. Vous êtes lié à une question, pas une réponse, mais oui, il y a une réponse qui ne résout pas celle liée à la question, mais la résout celle-ci.


@ Superbrain - Oui, c'est un lien vers une question (comme la pratique habituelle). L'idée est que cela devrait être un lien vers une question avec au moins une bonne réponse. Dans ce cas, je parlais de la réponse de Martin dans le lien et je pense que c'est un peu équivalent à la réponse acceptée ici, la différence étant la réponse acceptée ici utilise une compréhension de la liste tandis que Martin utilise une boucle.


3 Réponses :


1
votes

On dirait que vous souhaitez inverser les listes récursivement em> non seulement une fois niché. Cela signifie que vous devez faire une fonction de fonction récursive, c'est-à-dire qu'il doit s'appeler lui-même.

def recursive_reversed(items):
    if isinstance(items, list):
        return [recursive_reversed(item) for item in reversed(items)]
    return items


0 commentaires

0
votes

C'est parce que vous faites éléments [:: - 1] , ce qui rend la liste pour finir comme ça [[99, [17, [33, ['boo!']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] [33, ['boo!']]]]]] et 42 . Donc, vous ne pouvez plus que vous obtiendrez plus de listes dans une liste, vous devrez vérifier si vous êtes itération dans votre liste. Mais vous ne pouvez pas faire cela avec une simple boucle.


0 commentaires

0
votes

Si vous n'avez pas besoin d'une copie inversée, mais que vous voulez seulement inverser la structure elle-même: xxx

démo: xxx

Vous pouvez également le mettre fin avec renvoyer des éléments pour obtenir le résultat renvoyé: xxx

s'il est quelque peu inhabituel de modifier et de retourner, et certaines personnes Je ne l'aimera pas.


0 commentaires