删除所有空嵌套列表

2024-09-22 20:39:03 发布

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

如何从此列表中:

list = [
    [],
    ['', 'subitem'],
    [[]],
    'item',
    [
        'item',
        'item',
        [''],
        []
    ],
    []
]

我可以得到这个:

^{pr2}$

如何递归地删除所有空的嵌套列表、零字符串和带有嵌套零字符串的列表?在


Tags: 字符串列表itemlistpr2subitem
3条回答

递归:

def remove_lst(lst):
    if not isinstance(lst, list):
        return lst
    else:
        return [x for x in map(remove_lst, lst) if (x != [] and x != '')]

一句话:

def remove_empty(l):
    return tuple(filter(lambda x:not isinstance(x, (str, list, tuple)) or x, (remove_empty(x) if isinstance(x, (tuple, list)) else x for x in l)))
def purify(l):
    for (i, sl) in enumerate(l):
        if type(sl) == list:
            l[i] = purify(sl)
    return [i for i in l if i != [] and i != '']

l1 = [ [], ['', 'subitem'], [[]], 'item', [ 'item', 'item', [''], [] ], [] ]
print purify(l1)

印刷品:

^{pr2}$

相关问题 更多 >