函数 deepReverse 应该返回一个完全反转的列表,其中的所有列表也反转,但它只返回反转的 L (列表)的最后一个元素。我不知道如何解决这个问题,以便对原始列表 L 继续递归。
正在做:
deepReverse([1, [2, 3], 4, [5, 6]]) -> [6, 5]
deepReverse([1, [2, 3], 4, [5, 6]]) -> [6, 5]
应该做:
deepReverse([1, [2, 3], 4, [5, 6]]) -> [[6, 5], 4, [3, 2], 1]
deepReverse([1, [2, [3, 4], [5, [6, 7], 8]]]) -> [[[8, [7, 6], 5], [4, 3], 2], 1]
当前代码:
def deepReverse(L):
''' Returns reversed list with all lists contained in it also reversed '''
def deepReverse_helper(L, newlst):
if L == []:
return newlst
if isinstance(L[-1], list):
# element in L is a list
return deepReverse_helper(L[-1], [])
else:
# element in L is not a list
return deepReverse_helper(L[:-1], newlst + [L[-1]])
return deepReverse_helper(L, [])
最佳答案
我不明白为什么它比必要的复杂,你不能尝试一下这样的单行吗?
def deep_reverse(L):
return [deep_reverse(l) if type(l) is list else l for l in reversed(L)]
>>> deep_reverse([1, [2, 3], 4, [5, 6]])
[[6, 5], 4, [3, 2], 1]
关于Python正确的Deep Reverse函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46229772/