所以对于deepremove,可以给你一个链表和一个值。如果在该列表中找到一个值,则删除并继续,直到删除与参数值匹配的所有值。虽然我的程序一找到匹配就停止了
应该发生什么的例子
removedeep(3, [1, 2, 3, 4]) --> [1, 2, 4]
removedeep(3, [1, [2, 3], 4]) --> [1, [2], 4]
removedeep(3, [1, 2, 4]) --> [1, 2, 4]
removedeep(3, --> [1, [2], 4]
def removedeep(x, L):
'''test if x occurs within the nested list L.
E.g., removedeep(3, [1, 2, 3, 4]) --> [1, 2, 4]
removedeep(3, [1, [2, 3], 4]) --> [1, [2], 4]
removedeep(3, [1, 2, 4]) --> [1, 2, 4]
removedeep(3, --> [1, [2], 4]'''
if not L:
return []
elif type(L[0]) == type(x):
if(L[0] == x):
return removedeep(x, L[1:])
else:
return [L[0]] + removedeep(x, L[1:])
else:
return removedeep(x, L[0])
print(removedeep(4,[1,2,[4],3,5,6]))
虽然我的输出是[1,2]
而不是[1,2,3,5,6]
看看这个分支:
怎么样
L[1:]
?考虑您的示例,当您进入这个分支时,您的
L
现在是[[4],3,5,6]
,但是您只返回removedeep(4,[4])
**编辑版本:
遇到调用的嵌套数组时:
这会忽略它之后的任何值,因此给定输入,例如
4,[1,2,[4],3,5,6])
,您可以点击[4]
并调用removedeep(x, [4])
,但是您无法到达数组的3, 5, 6
部分。不知怎么的,你需要包括这些。快速的方法是添加:由此得出:
相关问题 更多 >
编程相关推荐