gpt4 book ai didi

python - 如何从带有嵌套列表的列表中递归删除元素?

转载 作者:行者123 更新时间:2023-12-04 07:22:45 26 4
gpt4 key购买 nike

我正在尝试创建一个递归函数,它接受一个输入列表(带有嵌套列表)并从第二个输入数组中删除与元素匹配的所有元素。我目前有这个:

def removeElements(self, array, remove_elements):

for element in array:
if isinstance(element, list):
removeElements(element, remove_elements)
else:
for remove_element in remove_elements:
if element == remove_element:
array.remove(element)

return array
“数组”输入通常如下所示:
array = [[1], [[2,3,4],[5,6,7]], [8,9,10]]
'remove_elements' 数组从不嵌套,看起来像这样:
remove_elements = [2,4,6,8,10]
这通常按预期工作,直到我给出以下 remove_elements大批:
[1,2,3,4,5,6,7,8,9,10]
输出:
[[], [[3], [6]], [9]]
出于某种原因,当我尝试在每个元素上运行它时,它不会删除具有 1 个以上元素的嵌套列表的第二个索引。如果可能的话,我希望该函数也只返回一个完全空的列表,但我不知道我做错了什么。

最佳答案

在迭代数组时修改数组会导致各种奇怪的现象;有一个不错的解释here .您可以通过构建一个新的输出数组来解决它,如下所示:

def removeElements(array, remove_elements):

out = []
for element in array:
if isinstance(element, list):
out.append(removeElements(element, remove_elements))
else:
if element not in remove_elements:
out.append(element)

return out

关于python - 如何从带有嵌套列表的列表中递归删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68394306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com