初学者递归并列出经过第二维的麻烦

时间:2016-07-14 17:19:35

标签: python list dimension

我试图以递归方式取消列表,但是我遇到了一个有效的方法来解决第二个维度的问题。这适用于前两个维度,但如果没有深入了解更多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)

1 个答案:

答案 0 :(得分: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嵌套列表的内容,否则从技术上讲这应该对大多数常见场景都是安全的。