Python正确的Deep Reverse函数?

标签 python

函数 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/

相关文章:

python - 无法打开由 Python 中的线程创建的管道描述符

c++ - C DLL 和 Python CTypes - 发布/调试中的不同返回

python - 如何通过将某些元素保留在末尾来对Python列表进行排序

Python 3.3 和在 Mac 上安装 PyOpenSSL

python - 在python列表中选择一个没有逗号分隔的元素

python - 如何使用 Pandas 对数据帧索引进行重新排序/排序?

python - 如何让我的脚本自动将我的管理员密码输入 Mac OS 终端?

python - 在 Google Colab Pro 中使用 TPU v3

python : export keyframe from maya in line

python - pandas 结合数据框