Python 如何展平2个深度的列表,返回其中没有任何子列表的列表

Python 如何展平2个深度的列表,返回其中没有任何子列表的列表,python,list,flatten,Python,List,Flatten,我当时正在研究一种算法,可以“展平”列表,基本上删除列表中的任何子列表 例如,[2,3,3,4]]应该变成[2,3,3,4]。为此,我写了以下内容: def flatten(l): total = [] for i in l: if i == int: total.append(i) elif i == list: for j in i: total.append(j):

我当时正在研究一种算法,可以“展平”列表,基本上删除列表中的任何子列表

例如,[2,3,3,4]]应该变成[2,3,3,4]。为此,我写了以下内容:

def flatten(l):
    total = []
    for i in l:
       if i == int:
           total.append(i)
       elif i == list:
           for j in i:
               total.append(j):
    return total

然而,该算法会产生一个错误。如果有人能帮忙,那就太好了。此外,如果有人可以显示递归路径来解决此问题,从而可以展平任意“深度”的列表(我当前的算法只能展平二维数组)

这里有两个主要问题-首先,您没有正确检查项目的类型(您应该使用
isinstace
)其次,您没有递归调用函数:

def flatten(l):
    total = []
    for i in l:
       if isinstance(i, list):
           total.extend(flatten(i))       
       else:
           total.append(i)

    return total

然而,该算法会产生一个错误。如果有人能帮忙,那就太好了。另外,如果有人可以显示一个递归路径来解决这个问题,从而可以展平任意“深度”的列表(我当前的算法只能展平二维数组),那么使用
isinstance(i,int)
,如果list append each,否则appendUse
isinstance
而不是
=
@keda,这不是答案,因为这不是一个列表列表。这只是其中的一些列表。可能是