初学者递归和列表通过第二维度的困难

2024-05-18 06:33:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图递归地取消列表的嵌入,但我无法找到一种有效的方法来完成第二个维度。这对于前两个维度来说效果很好,但是如果不深入讨论更多的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)

Tags: 方法列表returnifitemremovelistisinstance
1条回答
网友
1楼 · 发布于 2024-05-18 06:33:33

听起来像是要递归展平列表:

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

从技术上讲,这对于大多数常见场景应该是安全的,除非您有类似2k嵌套列表的内容

相关问题 更多 >