如何展平一个 2 深列表,return 一个没有任何子列表的列表
How to flatten a 2 deep list, return a list without any sublists within
我正在研究一种 'flattens' 列表的算法,实质上是删除列表中的所有子列表。
例如,[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
但是,此算法会产生错误。如果有人可以提供帮助,那就太好了。此外,如果有人可以显示解决此问题的递归路径,以便可以展平任意 'depth' 的列表(我当前的算法只能展平二维数组)
这里有两个主要问题 - 首先,您没有正确检查项目的类型(您应该使用 isinstace
),其次您没有递归调用函数:
def flatten(l):
total = []
for i in l:
if isinstance(i, list):
total.extend(flatten(i))
else:
total.append(i)
return total
我正在研究一种 'flattens' 列表的算法,实质上是删除列表中的所有子列表。
例如,[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
但是,此算法会产生错误。如果有人可以提供帮助,那就太好了。此外,如果有人可以显示解决此问题的递归路径,以便可以展平任意 'depth' 的列表(我当前的算法只能展平二维数组)
这里有两个主要问题 - 首先,您没有正确检查项目的类型(您应该使用 isinstace
),其次您没有递归调用函数:
def flatten(l):
total = []
for i in l:
if isinstance(i, list):
total.extend(flatten(i))
else:
total.append(i)
return total