2016-07-14 3 views
0

Je suis en train de la liste récursive annuler l'incorporation, mais je ne parviens pas à un moyen efficace de le faire après la deuxième dimension. Cela fonctionne bien pour les deux premières dimensions, mais sans aller plus en profondeur avec plus d'instructions if, cela ne fonctionnera pas après cela.des problèmes de récursion et la liste va passé deuxième dimension

UBLst = [] 
#Appends variables after they are retrieved from list of any dimension 
def antidimension(List): 
    global UBLst  
    if List == []: 
      ReturnLst = UBLst 
      UBLst = [] 
      return ReturnLst 
    elif not isinstance(List[0], list): 
      if List[0] != []: 
       UBLst.append(List[0]) 
       List.remove(List[0]) 
       return antidimension(List) 
    elif isinstance(List[0], list): 
      for item in List[0]: 
       UBLst.append(item) 
      List.remove(List[0]) 
      return antidimension(List) 
+2

Qu'entendez-vous exactement par "non attaché"? Pouvez-vous donner un exemple d'entrée et le résultat que vous souhaitez obtenir pour cela? – Mureinik

Répondre

1

On dirait que vous voulez aplatir récursive une liste:

def flatten(myList): 
    if isinstance(myList[0], list): 
    out = [] 
    for x in map(flatten, myList): 
     out.extend(x) 
    return out 
    else: 
    return myList 

Cela devrait être techniquement sans danger pour les scénarios les plus courants, sauf si vous avez quelque chose comme des listes imbriquées 2k.