【发布时间】:2012-11-23 03:32:15
【问题描述】:
我有一个嵌套列表,例如:
test = [[15, [7, [None], [11, [None], [13, [None], [None]]]], [None]], [20, [None], [None]]]
我想从中创建另一个列表,其中仅包含嵌套中的整数。哪个会返回这个:
[15, 7, 11, 13, 20]
我已经创建了这个递归函数来完成我需要完成的事情,但是,我不禁认为这不是最好的方法。有没有更pythonic或更有效的方法来做到这一点?
def nest_search(nest, hold=[]):
for item in nest:
if isinstance(item, int):
hold.append(item)
if isinstance(item, list):
nest_search(item, hold)
return hold
>>> print nest_search(test)
[15, 7, 11, 13, 20]
【问题讨论】:
-
你要找的操作叫做flatten。在 python 中搜索扁平化列表。
-
Flatten 然后过滤
-
我以前扁平化过列表,我认为这不适用于我发布的示例
list? -
它应该......但是你很接近我修改了你的功能,现在它应该可以工作了
-
我见过的所有“干净”(单线/pythonic)扁平化算法都只适用于列表列表,而不适用于任意深度的列表。
标签: python nested-lists