示例列表;
i = [[1,2,3,[]],[],[],[],[4,5,[],7]]
输出结果:
[[1,2,3],[4,5,7]]
1、使用递归实现
使用递归,可以删除任何深度的空列表:
def remove_nested_list(listt):
for index, value in enumerate(reversed(listt)):
if isinstance(value, list) and value != []:
remove_nested_list(value)
elif isinstance(value, list) and len(value) == 0:
listt.remove(value)
a = [[1, 2, 3, 0, []], [], [], [], [4, 5, [], 7]]
print(f"before-->{a}")
remove_nested_list(a)
print(f"after-->{a}")
输出:
before-->[[1, 2, 3, 0, []], [], [], [], [4, 5, [], 7]]
after-->[[1, 2, 3, 0], [4, 5, 7]]
或者
a = [[1,2,3,[]],[],[],[],[4,5,[],7]] def nested_check(alist): for item in alist[:]: if item == []: alist.remove(item) elif isinstance(item, list): nested_check(item) nested_check(a) print(a)
或者
def empty(lst): if lst == []: return True elif isinstance(lst, list): return all(empty(i) for i in lst) else: return False def remove_empty(lst): return ( [remove_empty(i) for i in lst if not empty(i)] if isinstance(lst, list) else lst ) i = [[1,2,3,[]],[],[],[],[4,5,[],7]] remove_empty(i) remove_nested_list(i) print(i) # [[1, 2, 3, []]] ii = [[1,2,3,[]],[],[],[],[4,5,[],7]] remove_empty(ii) remove_nested_list(ii) print(ii)
2、确定深度的方法
i = [[1,2,3,[]],[],[],[],[4,5,[],7]]
print([[j for j in ele if j] for ele in i if ele])
或者
a = [[1,2,3,[]],[],[],[],[4,5,[],7]] print('list before:', a) while [] in a: for i in a: if i == []: a.remove(i) for i in a: for e in i: if e == []: i.remove(e) print('list after:', a)