【发布时间】:2025-12-05 13:35:01
【问题描述】:
我正在尝试编写一个函数来读取包含列表的列表并返回相同的列表结构但没有元素。
def remove_from_list(l):
for e in l:
if isinstance(e, list):
remove_from_list(e)
else:
l.remove(e)
return l
所以对于这样的输入:
[1, 2, [], [3,[4]], 5]
我应该得到这样的东西:
[[], [[]]]
我尝试了这些输入:
[1, 2, [], [3,[4]], 5]
[1, 2, [], [2,[3]], 2]
得到了这些输出:
[2, [], [[4]]]
[[], [[3]], 2]
这很令人困惑,因为两个列表的结构相同;只有元素不同。所以我不仅犯了一个错误,而且我得到了一个不同的错误。非常感谢您对我的错误的功能和解释提供帮助。
【问题讨论】:
-
确实,这是一个初学者的错误。您不应该在迭代期间删除列表元素。
-
你一定要修改你传入的列表吗?
-
@cᴏʟᴅsᴘᴇᴇᴅ 不正确。可以使用反向迭代和
del,不需要副本。 -
@wim 您提到的关于递归列表的有趣挑战。您如何看待我在回答中试图解决的问题?
标签: python algorithm list recursion