【发布时间】:2018-11-22 01:48:34
【问题描述】:
我正在研究一种“扁平化”列表的算法,实质上是删除列表中的所有子列表。
例如,[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
但是,此算法会产生错误。如果有人可以提供帮助,那就太好了。此外,如果有人可以展示解决此问题的递归路径,以便可以展平任意“深度”的列表(我当前的算法只能展平二维数组)
【问题讨论】:
-
但是,此算法会产生错误。如果有人可以提供帮助,那就太好了。此外,如果有人可以展示解决此问题的递归路径,以便可以展平任意“深度”的列表(我目前的算法只能展平二维数组)
-
使用
isinstance(i,int),如果列表追加每个,否则追加 -
使用
isinstance而不是==。 -
@keda 这不是答案,因为这不是列表列表。这只是有一些列表。