Python 从列表中删除嵌套的空列表
我是Python新手,想问这个问题。我有一个列表,里面有很多类型,比如int、list、empty list、float、string,我想创建一个选项,根据选择删除任何类型,所以可能我想删除列表中的所有int或所有字符串。但棘手的是,如果我有如下输入:Python 从列表中删除嵌套的空列表,python,python-3.x,list,Python,Python 3.x,List,我是Python新手,想问这个问题。我有一个列表,里面有很多类型,比如int、list、empty list、float、string,我想创建一个选项,根据选择删除任何类型,所以可能我想删除列表中的所有int或所有字符串。但棘手的是,如果我有如下输入: [["hello", []], 1, 2.0, [], "hi"] 我想删除空列表,我希望这是输出: [["hello"], 1, 2.0, "hi"] 请帮帮我,因为我正在绞尽脑汁解决这个问题。简单递归方法 input = [["h
[["hello", []], 1, 2.0, [], "hi"]
我想删除空列表,我希望这是输出:
[["hello"], 1, 2.0, "hi"]
请帮帮我,因为我正在绞尽脑汁解决这个问题。简单递归方法
input = [["hello", []], 1, 2.0, [], "bonjour"]
def removeEmpty(input):
ans = []
for i in input:
if isinstance(i, list):
if i == []:
continue
else:
ans.append(removeEmpty(i))
else:
ans.append(i)
return ans
print(removeEmpty(input))
现有代码的问题在于它没有考虑嵌套列表 下面是一个递归解决方案:
def eliminate_empty_lists(_list):
if isinstance(_list, list):
return [l for l in map(eliminate_empty_lists, _list) if l != []]
return _list
并且输出与所需的相同:
example_list = [["hello", []], 1, 2.0, [], "bonjour"]
print(eliminate_empty_lists(example_list))
>>> [["hello"], 1, 2.0, "bonjour"]
你有没有试过自己编写代码来解决这个问题?@giorgosmyriantous我想删除我的问题try,提供一个你尝试过的例子。Giorgos Myrianthous的解决方案应该有效。您应该将他的答案标记为正确。isinstance用于检查i的类型,如果它是一个列表,我们需要将其作为空列表跳过,或者递归到其中以检查是否存在内部空列表为什么此答案被否决?如果OP每5分钟改变一次他的问题,那不是我的错。