You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何通过递归函数实现双层列表元素顺序反转

双层列表递归反转实现

需求目标

对双层结构列表做双重顺序反转:

  • 反转外层列表中子列表的排列顺序
  • 反转每个内层子列表自身的元素顺序

输入输出示例

原始输入:

xss1 = [['a1','a2'], ['b1','b2','b3','b4'], ['c1','c2','c3']]

期望输出:

xss2 = [['c3','c2','c1'], ['b4','b3','b2','b1'], ['a2','a1']]

现有代码问题

你当前编写的xxR函数仅支持单层列表反转:逻辑为每次取列表最后一个元素,拼接剩余列表切片的递归反转结果,没有对列表内的元素类型做判断,无法自动处理内层子列表的反转。

调整后递归实现

核心调整点:取到当前列表的最后一个元素时,先判断元素是否为列表类型,如果是则递归调用反转函数处理内层列表,再做外层拼接。

def xxR(xs):
    # 递归终止条件:空列表直接返回
    if not xs:
        return []
    last = xs[-1]
    # 若当前元素是列表,先递归完成内层反转
    if isinstance(last, list):
        last = xxR(last)
    # 拼接处理后的尾部元素 + 剩余部分的反转结果
    return [last] + xxR(xs[:-1])

效果验证

执行测试代码:

xss1 = [['a1','a2'], ['b1','b2','b3','b4'], ['c1','c2','c3']]
xss2 = xxR(xss1)
print(xss2)

运行输出为[['c3', 'c2', 'c1'], ['b4', 'b3', 'b2', 'b1'], ['a2', 'a1']],完全符合预期。
注:该逻辑天然支持任意层级的嵌套列表反转,不止局限于双层结构。

内容的提问来源于stack exchange,提问作者minjun kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 19:33:23