2016-07-14 27 views
0

我试图递归地列出一个列表,但我有一个有效的方法来做它过去的第二个维度的麻烦。这对于前两个维度来说工作得很好,但是如果没有更深入的if语句,它就不会起作用。初学者递归和列表麻烦通过第二维

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

你是什么意思的“不装饰”?你能举出一个示例输入和你想要得到的结果吗? – Mureinik

回答

1

听起来像是你想递归地压平列表:

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

这在技术上应该是最常见的情形安全的,除非你有像2K嵌套列表。